[Bug c++/122164] New: Type deduction with `auto` does not seem to work through static member variable initialization

attackerj1113 at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat Oct 4 12:21:49 GMT 2025


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

            Bug ID: 122164
           Summary: Type deduction with `auto` does not seem to work
                    through static member variable initialization
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: attackerj1113 at gmail dot com
  Target Milestone: ---

Consider the following code:


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

struct A {
  static int x;
  static int y;
  int foo();
};

int temp = 0;

decltype(temp) A::y = 0; //ok
auto A::x = temp; //rejected

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is rejected by GCC for type mismatch when trying to initialize `A::x` with
`auto A::x`, although the type of `A::x` here can be easily deduced to `int`,
which is identical to the type of `A::x` in the previous declaration of `struct
A`. Note that both LLVM and EDG accept the code, while MSVC also rejects it.

See godbolt: https://godbolt.org/z/1MqeavEcr


Member function declaration with auto return type is always rejected though:
https://godbolt.org/z/TaTqchGdE


More information about the Gcc-bugs mailing list