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]

Reply via email to