我正在开发(另一个(支持C++标准容器的序列化工具包。为了使我的工具包更加经得起未来的考验,我正在考虑使用像这样的可变模板参数
template <typename... Ts>
void (Writer& w, const std::vector<Ts...>& v) noexcept
{
using ValueType = typename std::vector<Ts...>::value_type;
// serialize vector elements
}
而不是像这个那样固定数量的模板参数
template <typename T, typename A>
void (Writer& w, const std::vector<T,A>& v) noexcept
{
using ValueType = T;
// serialize vector elements
}
在未来的C++修订版中,是否有可能将额外的模板参数添加到容器中?
正如Jarod42在评论中指出的那样,<typename Ts...>
不处理将来可能添加的非类型模板参数(但毫无疑问,请参见上文(。
因此,与<typename T, typename A>
相比,使用<typename Ts...>
可能没有任何好处,只是对于unordered_map
(例如<typename K, typename T, typename H, typename E, typename A>
(这样的容器来说更短。