Почему нет стандартного размера?

c++ stl c++14

1503 просмотра

1 ответ

Скотт Мейерс , Херб Саттер и другие защищают функции, не являющиеся членами, а не функции члена. И с такими дополнениями, как std::begin, std::cendи т.д., кажется, что STL движется в этом направлении. Если это так, то почему нет std::size?

Я предполагаю, потому что достаточно легко определить свою собственную версию:

namespace std {
    // C++14
    template <typename C>
    decltype(auto) size(const C& c)
    {
        return distance(cbegin(c), cend(c));
    }
}

Или я что-то упустил? есть ли причина не использовать не член size?

Автор: Daniel Источник Размещён: 12.11.2019 09:03

Ответы (1)


6 плюса

Решение

Почему нету std::size?

Потому что никто не написал вовремя предложение включить его в C ++ 14. Первый проект предложения о его добавлении был датирован маем 2014 года, задолго до того, как стандарт C ++ 14 был разослан для последнего тура голосования в феврале 2014 года.

Пересмотренный вариант предложения был утвержден в рабочем документе C ++ на последнем заседании Комитета в ноябре (см. Ход LWG 20), поэтому вполне вероятно, что вы увидите его в следующем пересмотре стандарта (C ++ 17?) вместе с std::empty()и std::data().

Автор: T.C. Размещён: 13.02.2015 11:41
Вопросы из категории :
32x32