混乱的模板代码
Confusing template code
这是什么意思
template < template < template < class > class, class > class Param >
我从未使用过template <template <X>>
类型的语法
从另一个网站上找到的
template < template < template < class > class, class > class Param >
struct Bogus {
int foo() {
printf("okn");;
}
};
感谢对该语法的任何提示。谢谢你
更新:看起来有一些解释已经存在,请参考下面的Jerry的解决方案
它被称为模板模板参数。这已经讨论过很多次了:
c++模板语法模板参数
模板模板参数在c++中的一些用途是什么?
使用模板模板类实参作为形参
等。
c++中有三个本体层:值、类型和模板。
模板实例化是一个类型。对象是某一类型的,并且它具有一个值。
所有三种实体都可以作为模板参数出现:
template <int N, typename T, template <typename> C>
{
C<T> array[N];
};
参数按此顺序分为"非类型模板参数"、"模板参数"answers"模板模板参数"(我想)。
拥有模板参数可能非常有用,例如,如果您想允许在任意容器上对某些内容进行参数化(特别是使用可变模板!):
template <typename T, template <typename...> Container>
void print(const Container<T> & c)
{ /* ... */ }
顺便说一下,当类模板包含成员时,必须分别使用typename
和template
来根据它们的性质对它们进行称呼(什么都不说意味着要引用值):
template <typename T> struct Foo
{
T value;
typedef T * pointer;
template <typename S> struct Nested;
};
// now refer to them as:
Foo<T>::value;
typename Foo<T>::pointer;
template<typename S> Foo<T>::template Nested<S>;
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 智能手机代码厨师问题逻辑混乱
- 为什么我在有关文件编码格式的QT代码中获得了混乱的代码
- 为什么使用valgrind时管道会变得混乱的代码 --xml-fd
- 工会用法和混乱的代码
- typedef 在C++代码混乱中
- 混乱的模板代码
- 组织sqlite3 C/ c++预处理语句(避免全局代码混乱)