レッツ・asssume、:関数のテンプレートをテンプレート引数として渡すことはできますか?私たちは、テンプレートfuncionを持っていることを
template<typename T1, typename T2, typename T3>
T3 such_fun(T1 a, T2 b) {
// do something...
}
、今私たちは、例えば、別のテンプレートでは、引数としてそれを使用したいですそのように
template<typename T1, template<typename, typename, typename> some_function>
void big_fun(T1 a) {
// some code...
a = some_function<T1, T1, T1>(a, a);
// some code...
}
可能でしょうか?
私はdefined()演算子で構造体を使用できることを知っています。私は機能について興味があります。
EDIT:
私はその質問に私の友人を書いていたものの部分的な解決策が見つかりました:
template<typename T1, T1 (*some_function)(T1, T1)>
void big_fun(T1 a) {
// some code...
a = some_function(a, a);
// some code...
}
しかし、まだを - それは前に関数型のマテリアなく可能だ場合、私は好奇心が強いですコール。たとえば、渡されたテンプレートをさまざまな種類の組み合わせで呼び出すことができます。
template<typename T1, typename T2, template<typename, typename, typename> some_function>
void big_fun(T1 a, T2 b) {
// some code...
a = some_function<T1, T1, T1>(a, a);
a = some_function<T1, T2, T1>(a, b);
b = some_function<T2, T2, T2>(b, b);
b = some_function<T2, T1, T2>(b, a);
// some code...
}
あなたが言っていることのことを私は理解していません。-1、スタンドアレーに慣れていない私たちのためにilustrationを提供できますか? – lurscher
@lurscher _you_は、それがdownvoteの恐ろしい理由であることを理解していないためです。私はそれを理解していないので、彼らが量子物理学について話すとき、量子物理学者にはあきらめない。 –
@SethCarnegie、私は同意しません。私は、それだけで、非常に良い理由だと思う。それに、答えは間違っている。 C++ 03であっても、質問がしたいことは完全に可能です。私は、SOが尋ねるものと、pmrが答えるものとの間には断絶があると思います。もし彼が彼の答えを改善すれば、私はそれを撤回すること以上に喜んでくれるでしょう – lurscher