https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79078

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Clang and EDG both procuce two warnings for this code, on the variable
definition and the call to operator+

struct [[deprecated("D is bad mmmkay")]] D {
  void f(const D&);
};

void D::f(const D&) { }

[[deprecated("D is bad ")]] D operator+(const D&, const D&);

int main()
{
  D d;     // warning
  d.f(d);
  d + d;   // warning
}

GCC produces seven warnings (and three notes)

d.cc:2:18: warning: ‘D’ is deprecated [-Wdeprecated-declarations]
   void f(const D&);
                  ^
d.cc:5:19: warning: ‘D’ is deprecated [-Wdeprecated-declarations]
 void D::f(const D&) { }
                   ^
d.cc:7:59: warning: ‘D’ is deprecated: D is bad mmmkay
[-Wdeprecated-declarations]
 [[deprecated("D is bad ")]] D operator+(const D&, const D&);
                                                           ^
d.cc:1:42: note: declared here
 struct [[deprecated("D is bad mmmkay")]] D {
                                          ^
d.cc:7:59: warning: ‘D’ is deprecated [-Wdeprecated-declarations]
 [[deprecated("D is bad ")]] D operator+(const D&, const D&);
                                                           ^
d.cc:7:59: warning: ‘D’ is deprecated [-Wdeprecated-declarations]
d.cc: In function ‘int main()’:
d.cc:11:5: warning: ‘D’ is deprecated: D is bad mmmkay
[-Wdeprecated-declarations]
   D d;
     ^
d.cc:1:42: note: declared here
 struct [[deprecated("D is bad mmmkay")]] D {
                                          ^
d.cc:13:7: warning: ‘D operator+(const D&, const D&)’ is deprecated: D is bad 
[-Wdeprecated-declarations]
   d + d;
       ^
d.cc:7:31: note: declared here
 [[deprecated("D is bad ")]] D operator+(const D&, const D&);
                               ^~~~~~~~

Reply via email to