テンプレートコンストラクタを指定することは可能ですかテンプレートクラスの特定の特殊化に対してのみ可能ですか? 私はこのコードを持っている:テンプレートコンストラクタでのテンプレートクラスの特殊化
template <typename T>
class A {
public:
A(std::function<T()> f) : x(f) {}
template <typename Y>
A<void>(Y* x) : x(x) {}
private:
boost::variant<int*, char*, std::function<T()>> x;
}
私は2番目のコンストラクタは、私は明示的にそのTがすべきコンパイラに伝える方法を見つけようとしている理由です、唯一の非STD ::関数のパラメータ用にコンパイルしようとしていますこの場合には無効になりますが、明らかにこれはコンパイルされません。
あなたのケースでは、 'int *'と 'char *'のオーバーロードだけをしないでください。 – Jarod42