我对模板的模板有点不知所措。
#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/