我正在(另外)正在研究支持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 ++版本中是否有可能在容器中添加额外的模板参数?
正如NathanOliver在评论中指出的那样,添加容器模板参数会破坏许多假定参数数量的旧代码。因此,委员会是否会做这样的事情令人怀疑。
正如Jarod42在评论中指出的那样,<typename Ts...>
不处理将来可能会添加(但毫无疑问,请参阅上文)的非类型模板参数。
因此,<typename Ts...>
相对于<typename T, typename A>
可能没有任何好处,除了unordered_map
之类的容器(例如<typename K, typename T, typename H, typename E, typename A>
)的使用时间更短。