最初にエラーメッセージが表示されています。 "引数"という言葉の後に引用符だけがあります。それは、それ自身では不思議です。しかし、ここで私が解決しようとしている問題があります。私は内部的に入力しても、コンバーチブル型を受け入れる必要があります(テンプレート)の参照を格納するクラスを書いている:候補テンプレートが無視されました:テンプレート引数を推測できませんでした。 '
template<typename T>
class Ref {
public:
Ref();
Ref(std::nullptr_t);
explicit Ref(T *value);
Ref(Ref const& value);
template<typename T2, typename std::enable_if<std::is_convertible<T2*, T*>::value, T2>::type>
Ref(Ref<T2> const& value);
template<typename T2, typename std::enable_if<std::is_convertible<T2*, T*>::value, T2>::type>
Ref(Ref<T2> &&value);
private:
T *_value;
};
は、今私は2クラスAとBがあります。
class A {
};
class B : public A {
};
をし、しようとしていますクラスAのための文献変数にBのための参考文献のインスタンスを割り当てることが:
Ref<B> t;
Ref<A> t2(t);
をこれが実際にコンパイルする必要があり、私は最後の2つのコンストラクタ(コンバーチブル型をとるもの)のために記載されたエラー(打ち鳴らす)を取得し、そのsh ouldは実際に割り当てられています。ここでテンプレート引数の控除を行うには何が必要ですか?
ここでは、簡単にするために代入演算子implsを省略しましたが、インターフェイスを簡素化するヒントについては感謝します。 –