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