这个模板参数是什么?

What is this template argument?

本文关键字:是什么 参数      更新时间:2023-10-16

所以我今天遇到了这个关于c++模板编程,谁能给我解释一下A(*)(B)作为模板参数是什么?

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

类型A (*)(B)是指向一个接受B类型参数并返回A类型值的函数的指针类型。

这只是另一种类型。您的代码是类模板replace_type_impl部分专门化的实例。

这是一个函数指针类型,用于一元函数,接受B,返回A

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

[*]或者可能用X代替Y,或者可能做一些完全不同的事情-我不知道 replace_type做什么,但我认为这是一个公平的猜测。

指向一个返回A并接受B作为唯一参数的函数的指针。

A(*)(B)

这是一个类型;

一个函数的指针,该函数接受B的值并返回A的值。