这个模板参数是什么? 我今天就C++模板编程遇到了这个问题,有人能解释一下什么是(a)(b)作为模板的参数吗?< /p> template <class X, class Y, class A, class B> struct replace_type_impl<A(*)(B),X,Y,false> { typedef typename replace_type<A,X,Y>::type (*type)(typename replace_type<B,X,Y>::type); }; 模板 结构替换类型执行 { typedef typename replace_type::type(*type)(typename replace_type::type); };

这个模板参数是什么? 我今天就C++模板编程遇到了这个问题,有人能解释一下什么是(a)(b)作为模板的参数吗?< /p> template <class X, class Y, class A, class B> struct replace_type_impl<A(*)(B),X,Y,false> { typedef typename replace_type<A,X,Y>::type (*type)(typename replace_type<B,X,Y>::type); }; 模板 结构替换类型执行 { typedef typename replace_type::type(*type)(typename replace_type::type); };,c++,templates,C++,Templates,这是一种函数指针类型,用于接受B并返回a的一元函数 在函数指针类型A(*)(B)中出现X时,此模板将X替换为Y[*]。它在返回类型A和参数类型B中分别替换它,然后将它们合并回一个名为type的新typedef,它也是一个函数指针 [*]或者可能用X替换Y,或者可能做了一些完全不同的事情-我不知道replace\u type做了什么,但我认为这是一个合理的猜测。类型a(*)(B)是指向函数的指针类型,该函数使用一个B类型的参数并返回一个a类型的值 这只是另一种类型。您的代码是类模板的部分专门化的实

这是一种函数指针类型,用于接受
B
并返回
a
的一元函数

在函数指针类型
A(*)(B)
中出现X时,此模板将X替换为Y[*]。它在返回类型A和参数类型B中分别替换它,然后将它们合并回一个名为
type
的新typedef,它也是一个函数指针

[*]或者可能用X替换Y,或者可能做了一些完全不同的事情-我不知道
replace\u type
做了什么,但我认为这是一个合理的猜测。

类型
a(*)(B)
是指向函数的指针类型,该函数使用一个
B
类型的参数并返回一个
a
类型的值


这只是另一种类型。您的代码是类模板的部分专门化的实例。它是指向函数的指针,返回
a
,并将
B
作为其单个参数。

a(*)(B)

这是一种类型;指向按值获取a
B
并按值返回a
a
的函数的指针