cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Версия ядра #246

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +1, -0 Автор идеи: Dima Kos

Хорошо бы добавить таки версию стандарта поддерживаемую данным конкретным компилятором.

Я честно говоря не читал ещё, что там по 20ке. И к сожалению(может меня подводит уставший мозг) я не нашел поиска по предложениям на этом сайте, что очень неудобно. Возможно кто-то это уже предлагал. Но всё же я хочу высказать своё мнение: Доколе мы будем писать портянки условной компиляции, учитывая всевозможные компиляторы и их версии - не пора бы уже ввести какие нибудь человеческие макросы для определения версии стандарта.

Какой нибудь CPPSTD_VERSION или что нибудь типа того. Я понимаю, что многие компиляторы не поддерживают стандарт целиком или уже начинают поддерживать фичи не принятого ещё стандарта, но я считаю, что всё равно нам этой проблемой стоит подумать. Например, эти макросы можно расширять по названиям ключевых нововведений, которые также прописаны в стандарте, а когда компилятор доходит до абсолютной готовности соответсвия тому или иному стандарту, то может задефайнить только CPPSTD_VERSION. А писатели библиотек соответсвенно будут чекать либо её либо конкретные отдельные фичи. По крайней мере всякие config.hpp будут меньше и больше вероятность, что это всё взлетит на каких нибудь малоизвестных компиляторах(при условии что они более менее следуют стандарту).

PS Я не знаю куда написать(письмом??...) по данному ресурсу - т.к. на сайте обратной связи я тоже не нашел, а так хотелось написать про отсутствие поиска. Конечно можно искать из поисковиков на данном сайте :), но согласитесь - это не то...

apolukhin commented 3 years ago

yndx-antoshkka, 1 декабря 2017, 11:57 Версию стандарта можно узнать из макроса __cplusplus http://en.cppreference.com/w/cpp/preprocessor/replace и это есть в стандарте уже давно.

Поддержку отдельных фич можно получить из feature testing macro http://en.cppreference.com/w/User:D41D8CD98F/feature_testing_macros

Вот тут http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0835r0.html идёт работа по включению feature testing macro в стандарт (все современные компиляторы и так их используют)

zamazan4ik@tut.by, 9 декабря 2017, 5:03 Кстати вроде как идут разговоры о заголовочном файле , который будет содержать полезную информацию.

yndx-antoshkka, 13 июня 2018, 12:22 Feature testing macros добавили в стандарт C++20. Теперь можно портабельно проверять наличие различных фичей в языке и в библиотеке C++.