c++ - 模板语法模板

标签 c++ templates

我对模板的模板有点不知所措。

#include <iostream>

template <class T>
class Foo{
    T foobar;
    T getFooBar();
};

template <class T>
T Foo<T>::getFooBar(){
    return (T) 2.0;
}

template <class T, template<class> class H>
class Bar{
    void barbar();
};

template <class T, template<class> class H>
void Bar<T, H<T> >::barbar(){}

int main(int iargc, char *iargv[]){
    // do stuff;
}

这不编译,我不明白编译器的错误信息

expected a class template, got ‘H<T>’

最佳答案

正确的语法是只传递 H :

template <class T, template<class> class H>
void Bar<T, H>::barbar() {}
            ^^

H<T>是具体类型,H本身就是您正在寻找的类模板。

关于c++ - 模板语法模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36040641/

相关文章:

c++ - 如何检查变量是否是 C++ 中的映射?

c++ - 异步传递时如何在函数中传递多个参数

c++ - 如何创建一个 Lazy C++ 模板类来处理没有默认构造函数的类型?

c++ - 模板实例化——编译器如何避免重复符号?

c++ - 迭代继承类 C++ 的列表

C++ 第三方库 typedef 与标准 stdin.h 冲突

c++ - 顺序独立的可变参数模板参数

c++ - 可变参数模板 : producing a tuple of pairs of adjacent elements

c++模板化 map ,不同类型参数的通用接口(interface)

c++ - 无法在 Visual Studio 2013 中正确创建 C++ 项目