将来的C ++修订版中是否可以添加额外的容器模板参数?

问题描述 投票:0回答:1

我正在(另外)正在研究支持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 ++版本中是否有可能在容器中添加额外的模板参数?

c++ templates stl containers variadic-templates
1个回答
0
投票

正如NathanOliver在评论中指出的那样,添加容器模板参数会破坏许多假定参数数量的旧代码。因此,委员会是否会做这样的事情令人怀疑。

正如Jarod42在评论中指出的那样,<typename Ts...>不处理将来可能会添加(但毫无疑问,请参阅上文)的非类型模板参数。

因此,<typename Ts...>相对于<typename T, typename A>可能没有任何好处,除了unordered_map之类的容器(例如<typename K, typename T, typename H, typename E, typename A>)的使用时间更短。

© www.soinside.com 2019 - 2024. All rights reserved.