以下のようなMyClass
C++
1class MyClass { 2 // メンバ変数 3 ... 4 5 public: 6 // デフォルトコンストラクタ無効 7 MyClass() = delete; 8 // 何らかの面倒くさいコンストラクタ 9 MyClass(int, ...); 10};
を戻り値とする、SFINAEによって条件指定した以下のような関数を作りたいです。
C++
1template <class T> 2auto my_function(T t, ClassA a, ClassB b) -> decltype(/*tに関する条件1*/, /*tに関する条件2*/, MyClass{});
decltypeの最後の引数にはMyClass型の値を指定する必要があると理解していますが、MyClassはデフォルトコンストラクタが存在しないため、上のコードはコンパイルできません。(MyClass{}が不可)
コンストラクタを指定せずに、MyClass型の値を指定することはできますか?
-> decltype(std::declval<MyClass>())としても、うまくいきませんでした。
-> std::decay_t<decltype(std::declval<MyClass>())>
とすれば通りましたが、これは適切なのでしょうか。
ご教示ください。よろしくおねがい致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/30 14:24
2020/05/30 14:49