Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多个模板函数,其enable_if and is_相同,且在C+中缺少类模板的参数列表+;_C++_Templates_Sfinae - Fatal编程技术网

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;
}