cpp-ru / ideas

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

Расширить атрибут deprecated #402

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +3, -9 Автор идеи: Игорь Шаповал

В языке Java версии 9 анотация Deprecated была расширена на параметры. Параметр since указывает с какой версии стал устаревшим, а параметр forRemoval указывает надо удалять или нет в будущем.

@Deprecated(since="9", forRemoval=true)
public void test() {}

Предлагаю в С++ расширить атрибут deprecated на параметры since и for_removal. Полезно для помечания устаревших функций, классов и т.п. в стандарте.

[[deprecated(cause="bad method", since="C++17", for_removal=true)]]
void routine() {
   // some code
}
apolukhin commented 3 years ago

yndx-antoshkka, 10 января 2019, 12:13 Можно достичь того же самого эффекта, просто написав словами причину/срок/... В чём практический смысл?

Игорь Шаповал, 10 января 2019, 21:23 Это полезно для разработчиков кода, что фичу нужно удалить в следующей версии. Держать базу возможных претендентов на удаления.

Mihail Slobodyanuk, 27 февраля 2019, 21:13

В чём практический смысл?

В компиляторе можно будет сделать включаемую строгую проверку на соответствие требований версии стандарта и запрещать использование таких deprecated вызовов. При написании нового кода проверку сразу включать и она сразу будет зависеть от версии стандарта в опциях компиляции