1
このようなことをしたいと思いますが、誰でも可能かどうか考えていますか?テンプレートファンクタのテンプレート引数としてのテンプレート関数
template<typename T> using pLearn = T (*)(T, T, const HebbianConf<T> &);
template<typename T> using pNormal = T (*)(T, T);
template<typename T> using pDerivative = T (*)(T, T, T);
template <class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB>
class TransfFunction {
public:
static Type learn(Type a, Type b, const HebbianConf<Type> &setup) { return LearnCB<Type>(a, b, setup); };
static Type normal(Type a, Type b) { return NormalCB<Type>(a, b); };
static Type normal(Type a, Type b, Type c) { return DerivCB<Type>(a, b, c); };
};
エラー:
In file included from /Functions.cpp:2:0:
/Functions.h:207:23: error: ‘pLearn’ is not a type
template <class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB>
^
/Functions.h:207:39: error: ‘pNormal’ is not a type
template <class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB>
^
/Functions.h:207:57: error: ‘pDerivative’ is not a type
template <class Type, pLearn LearnCB, pNormal NormalCB, pDerivative DerivCB>
どのコンパイラを使用していますか? MSVS15についてはここをクリック – Rakete1111
後でタイプをバインドするのはなぜですか?なぜ、 'template LearnCB、...>'そして 'return LearnCB(a、b、setup);だけではないのですか? –
それは不可能だが動作すると思った。推測、これは解決策でした – dgrat