如果我希望模板模板参数有一个论点,那么我可以将其声明如下:
template<template<typename> class T>
struct S {
T<int> t_;
//other code here
}
但是,如果我以后想提供一个模板模板参数,该参数需要两个参数,其中第二个参数具有默认值(如 std::vector)T<int> t_;
仍然可以工作,但模板不匹配template<typename> class T
。我可以通过制作template<typename> class T
可变参数模板来解决这个问题template<typename...> class T
。现在我的代码更灵活了。
将来我应该将所有模板模板参数设为可变参数吗?有什么理由不应该(假设由于其他原因我的代码已经需要 C++11 支持)?