【发布时间】:2014-07-11 20:39:20
【问题描述】:
我有这个模板功能(我记得在某处看到过类似的东西)。它适用于std::function 和std::list(如Container)。但我无法真正理解template <typename, typename...> class Container 的语法。 < > 中的内容似乎是一种不同的语言(与 C/旧 C++ 相比)。有人可以解释一下或提供一个很好的参考来解释这一点吗?
template <typename T, template <typename, typename...> class Container>
static bool contained(const T & x, const Container<T> & xs) {
return std::find(xs.begin(),xs.end(),x) != xs.end();
}
【问题讨论】:
-
您可能会发现这个细微的修改很有趣(see here)。请注意,这不会与链接 libc++ 的 clang3.4 一起编译(但可以链接 libstdc++)。不同之处在于
std::list的实现方式。添加可变参数包解决了这个问题,与第一个相比的输出值得研究(see here)。 -
确实如此。很高兴知道。
标签: c++ templates c++11 variadic-templates