1
関数に渡されるパラメータから推論可能な型テンプレートパラメータと型以外のテンプレートパラメータの両方を持つテンプレート関数を作成したい明示的に配置されます。コンパイラがそれぞれの型を推測できるようですが、非型のテンプレートパラメータを指定すると、すべてのテンプレートパラメータが必要になります。非型テンプレートパラメータを指定することはできますか?非型パラメータを明示的に指定し、型パラメータを暗黙的に指定してテンプレート関数を呼び出す
#include <iostream>
#include <typeinfo>
template <typename T, bool bPrint=true>
void f(T var) {
if (bPrint)
std::cout << typeid(var).name() << std::endl;
}
int main() {
f(3); //works
f<false>(3); //error: template argument deduction/substitution failed
}
テンプレートパラメータは、インスタンス間の宣言とまったく同じ順序でテンプレートに渡す必要があります... –