https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79735
Bug ID: 79735 Summary: C++14: syntax error in attribute deprecated silently ignored Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: becker.bernd at gmx dot net Target Milestone: --- A malformed deprecated attribute expression is silently ignored. g++ compiles to a.out and does neither show the deprecated warning nor an error. In the following code if the closing parenthesis is left out the deprecated warning disappears, a.out is generated but no error is shown: #include <iostream> class [[deprecated("some text")]] Test { }; int main( int, char**) { Test t; return 0; } Correct output is (German locale): /local/gcc7/bin/g++ --std=c++14 test.cpp test.cpp: In Funktion »int main(int, char**)«: test.cpp:7:8: Warnung: »Test« ist veraltet: some text [-Wdeprecated-declarations] Test t; ^ test.cpp:3:35: Anmerkung: hier deklariert class [[deprecated("some text")]] Test { ^~~~ changing line 3 to this ( missing ')' ): class [[deprecated("some text"]] Test { results into a successful compile run without warning. I observed the same problem with gcc 5.4 and g++-6 (SUSE Linux) 6.2.1 20160826 [gcc-6-branch revision 239773]