Почему в libstdC++ нет span::span(контейнер &)?
Согласно cppreference, в C++20std::span
предполагается, что его можно построить с использованием ссылок на контейнеры:
template <class Container>
constexpr span(Container& cont);
template <class Container>
constexpr span(const Container& cont);
но в главной ветке файла span libstdC++ (по состоянию на 18 января 2020 г.) я не вижу этих конструкторов. Я вижу, что конструктор принимаетRange&&
- это достаточная замена? Или - я что-то упускаю?
1 ответ
При работе с постоянно меняющимися функциями C++ (например, для стандартов, которые еще не созданы) лучше обращаться к источнику, а не к вторичной документации, такой как Cppreference.
На момент написания этой статьи рабочий черновик стандарта делает то, что говорит libstdC++: единственная перегрузка, которая может занять&&
непрерывного диапазона. Ограничения на эту функцию достаточно похожи на ограничения из Cppreference, что в основном это разные способы выражения одного и того же, но libstdC++ реализует стандарт в том виде, в котором он существует в настоящее время.