这个模板参数是什么?
What is this template argument?
所以我今天遇到了这个关于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
的值。
相关文章:
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在模板参数中使用 {} 在 type_trait{} 中时,其作用是什么<T>?
- 当通知迭代器参数初始化为空列表的开头时,list::insert 行为是什么?
- 用相同的参数声明两个构造函数的最偶像化的方法是什么?
- 使用作为参数返回的指针的最佳做法是什么
- 初始化对象以在 C++08 中作为参数传递的首选语法是什么?
- 通过引用函数传递指针参数是什么意思?
- 自动参数捕获的扣除规则是什么?
- FFT函数的参数是什么意思
- 将共享指针传递给函数参数 - 将其分配给局部变量的正确方法是什么
- "in"和"out"在参数方向上是什么意思?
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 使用对函数和IO对象的引用(作为参数)的目的是什么
- 将显式指定的函数模板重载作为模板参数传递的正确语法是什么?
- 遍历模板参数包,没有争论的专业化的作用是什么?
- 函数参数中的 v=0 是什么意思
- 这个奇怪的函数参数是什么?
- 这个函数的参数是什么?
- 带有约束的可变参数模板的'requires'表达式的语法是什么?