Стандартизировать вложенный включение стандартные библиотеки

Raiden LuiKang
Raiden LuiKang

Моя идея,   каждого стандартную библиотеку указать какие другие библиотеки они "должны" включить, как минимум.

 

Например, тот же  <utility> -- зависят по каким другим библиотекам,  надо точно указать .

Либо, C++17  -- <string_view>   -- Здесь мне интересно , что,  это библиотека включает  у себя <string> или нет?   

У std::string_view   нет прямую зависимости std::string.

Например, у boost/utility/string_view.hpp  (1.69 )  включает  <string>, <algorithm> , <iterator>   <stdexcept>,  <cstring> , <iosfwd>   и ряд других стандартные библиотеки.

 

 

0
рейтинг
1 комментарий
yndx-antoshkka

Это описано в стандарте, но несколько в иной форме: каждый заголовочный файл содержит только то, что непосредственно в нём описано. Всё что "приезжает" в единицу трансляции помимо этого - платформо специфично и на это нельзя полагаться.

Другими словами, подключая <string_view> вы можете "бонусом" получить <utility>, но при этом на другом компиляторе/платформе <utility> может вам не подключиться, при подключении <string_view>. Так что если вам нужно что-то из <utility> - лучше его явно подключить, и не надеяться на то, что <string_view> подтянет <utility>.

yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения