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

--- Comment #14 from Martin Sebor <msebor at gcc dot gnu.org> ---
For non-member functions that are part of a class API I would like to see about
getting the following to work for types (as it already does for functions):

1) define a class with no attribute
2) define the API that uses the class without triggering warnings
3) declare the class [[deprecated]]
4) have any subsequent uses of the class trigger warnings

Like this:

$ cat u.C && gcc -S -Wall -Wextra -Wpedantic u.C
struct A;

int f (A*);

int i = f (0);

struct A { };

int g (A);                 // no warning

int j = g (A ());          // no warning

struct [[deprecated]] A;   // add attribute, expect no warning

int h (A);                 // expect warning

u.C:13:23: warning: type attributes ignored after type is already defined
[-Wattributes]
 struct [[deprecated]] A;   // add attribute, expect no warning
                       ^

Currently it doesn't work because for structs, GCC doesn't apply attributes
from declarations, only on definitions (this is bug 81756, at least in part).

Does it resolve the outstanding issues?  Are there any concerns with it?

Reply via email to