为什么不是这个有效的C ++?
template <typename Container, typename T>
bool
foo (const Container <T> &);
g ++给了我Container is not a template
,这显然不是它的真正含义。
尝试template <typename Container> template <typename T>
也不起作用,const typename Container <T> &
对我来说,似乎有必要定义一个对容器和包含类型都是通用的接口。
所以,
答案 0 :(得分:7)
你可以这样做:
template <template <class... > class Container, class T>
bool foo (const Container<T> &);
此语法(class...
)告诉编译器container
是一个包含任意数量参数的模板。
请记住,当你有template <class T>
时,你希望T成为类型。 std::vector
不是类型,而是模板。 std::vector<int>
是一种类型,但这不是模板,因此您无法拥有std::vector<int> <char>
。