Могут ли быть добавлены дополнительные аргументы шаблона контейнера в будущих ревизиях C ++? - PullRequest
0 голосов
/ 09 апреля 2020

Я работаю над (еще одним) набором инструментов сериализации, который поддерживает стандартные контейнеры C ++. Чтобы сделать мой инструментарий более перспективным, я рассматриваю возможность использования таких аргументов шаблона variadi 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
}
* 1006 Есть ли вероятность, что дополнительные аргументы шаблона могут быть добавлены в контейнеры в будущих ревизиях C ++?

1 Ответ

0 голосов
/ 10 апреля 2020

Как отметил NathanOliver в комментариях, добавление параметров шаблона контейнера разрушило бы много устаревшего кода, который принимает количество параметров. Поэтому сомнительно, что комитет сделал бы такую ​​вещь.

Как указал Jarod42 в комментариях, <typename Ts...> не обрабатывает нетипичные параметры шаблона, которые могли бы быть (но сомнительно, см. Выше) добавлено в будущем.

Поэтому, вероятно, нет смысла использовать <typename Ts...> над <typename T, typename A>, за исключением того, что оно короче для таких контейнеров, как unordered_map (например, <typename K, typename T, typename H, typename E, typename A>).

...