C++ 多个模板函数,其enable_if and is_相同,且在C+中缺少类模板的参数列表+;
我有以下代码,可以很好地编译:C++ 多个模板函数,其enable_if and is_相同,且在C+中缺少类模板的参数列表+;,c++,templates,sfinae,C++,Templates,Sfinae,我有以下代码,可以很好地编译: #包括 结构{}; 结构Jac{}; 模板 甲级; 模板 甲级 { 公众: A(){std::cout您可以更改foo以接受模板参数CT,该模板参数以两种类型为模板,如果CT与A或B的类型相同,则启用\u: 模板 void foo() { A A_res; A_jac; } 模板 void foo() { B B_res; B_jac; } 这是一个。也许你想要?谢谢,这正是下面提出的解决方案。 template<typename S, template&
#包括
结构{};
结构Jac{};
模板
甲级;
模板
甲级
{
公众:
A(){std::cout您可以更改foo
以接受模板参数CT
,该模板参数以两种类型为模板,如果CT
与A
或B
的类型相同,则启用\u:
模板
void foo()
{
A A_res;
A_jac;
}
模板
void foo()
{
B B_res;
B_jac;
}
这是一个。也许你想要?谢谢,这正是下面提出的解决方案。
template<typename S, template<typename, typename> typename CT,
std::enable_if_t<std::is_same<CT<Res,S>, A<Res,S>>::value, bool> = true
>
void foo()
{
A<Res, S> a_res;
A<Jac, S> a_jac;
}
template<typename S, template<typename, typename> typename CT,
std::enable_if_t<std::is_same<CT<Res, S>, B<Res,S>>::value, bool> = true
>
void foo()
{
B<Res, S> b_res;
B<Jac, S> b_jac;
}