在未来的C++修订版中是否会添加额外的容器模板参数



我正在开发(另一个(支持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 T, typename A>相比,使用<typename Ts...>可能没有任何好处,只是对于unordered_map(例如<typename K, typename T, typename H, typename E, typename A>(这样的容器来说更短。

最新更新