This was fixed by r269078. Tested x86_64-pc-linux-gnu, applying to trunk.
PR c++/83596 gcc/testsuite/ChangeLog: * g++.dg/cpp1z/nontype5.C: New test. --- gcc/testsuite/g++.dg/cpp1z/nontype5.C | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp1z/nontype5.C diff --git a/gcc/testsuite/g++.dg/cpp1z/nontype5.C b/gcc/testsuite/g++.dg/cpp1z/nontype5.C new file mode 100644 index 00000000000..7e6639dd175 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/nontype5.C @@ -0,0 +1,11 @@ +// PR c++/83596 +// { dg-do compile { target c++17 } } + +struct X { int x; int y; }; +template <int X::* mp> int get(X& x) { return x.*mp; } +constexpr int X::* getMP() { return &X::y; } +constexpr int X::* mptr = getMP(); +int test() { + X x{1, 2}; + return get<mptr>(x); +} base-commit: bb7cf39b05a216431a431499d0c36a6034f6acc4 -- 2.35.1