Как получить предупреждение о старых спецификациях исключений

Я знаю, что, помимо прочего (например, auto_ptr), спецификации исключений в C ++ 11 устарели.

Есть ли способ получить предупреждение от g ++ 4.8 с помощью следующего кода?

struct F{
void foo() throw (int){}
};
int main()
{
}

Я уже пробовал с -Стена -педантика -Векстра -Представленные-объявления, но безуспешно

1

Решение

Ты можешь использовать

class __attribute__((deprecated)) old_style_throw_specification;
class old_style_throw_specification {};

#define throw(...) throw(old_style_throw_specification, __VA_ARGS__)

Живой пример

или если вам нужно поддерживать спецификации пустых бросков (спасибо @ John5342 за указание на это), вы можете использовать

#define throw(...) throw(old_style_throw_specification, ##__VA_ARGS__)

для макросов, но вам нужно скомпилировать с расширениями GNU: -std=gnu++11 как указано выше не является строго законным C ++ 11.

Живой пример

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]