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

Игорь Шаповал
Игорь Шаповал

В языке 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
}

 

 

 

-6
рейтинг
3 комментария
yndx-antoshkka

Можно достичь того же самого эффекта, просто написав словами причину/срок/... В чём практический смысл?

yndx-antoshkka
Игорь Шаповал

Это полезно для разработчиков кода, что фичу нужно удалить в следующей версии. Держать базу возможных претендентов на удаления.

Игорь Шаповал
Mihail Slobodyanuk

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

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

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