https://gcc.gnu.org/g:49d997554d4d526cfce7f8384584c081ed3577c9

commit r16-7540-g49d997554d4d526cfce7f8384584c081ed3577c9
Author: Jakub Jelinek <[email protected]>
Date:   Tue Feb 17 09:00:08 2026 +0100

    c++: Fix up is_type_alias2.C testcase for Solaris [PR124119]
    
    Given https://eel.is/c++draft/expr.reflect#5.1
    we error on
    typedef __SIZE_TYPE__ A;
    namespace B {
      using ::A;
      typedef __SIZE_TYPE__ C;
    }
    using B::C;
    constexpr auto a = ^^A;
    constexpr auto b = ^^B::A;
    constexpr auto c = ^^B::C;
    constexpr auto d = ^^C;
    on ^^B::A and ^^C (note, clang++ fork only errors on ^^B::A).
    Now, whether size_t is
    typedef __SIZE_TYPE__ size_t;
    namespace std {
      using ::size_t;
    }
    or
    namespace std {
      typedef __SIZE_TYPE__ size_t;
    }
    using std::size_t;
    depends on the target and clearly is the latter on Solaris, so testing
    whether ^^size_t is a type alias doesn't work there - it is found as
    a using decl there.
    So  the following patch stops testing it for size_t and tests yet another
    user alias (a typedef is already tested - ^^T).
    
    2026-02-17  Jakub Jelinek  <[email protected]>
    
            PR c++/124119
            * g++.dg/reflect/is_type_alias2.C (W): New type alias.
            Assert is_type_alias (^^W).  Don't assert is_type_alias (^^size_t).

Diff:
---
 gcc/testsuite/g++.dg/reflect/is_type_alias2.C | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gcc/testsuite/g++.dg/reflect/is_type_alias2.C 
b/gcc/testsuite/g++.dg/reflect/is_type_alias2.C
index 0fa0a46868c9..82cff34bc0c0 100644
--- a/gcc/testsuite/g++.dg/reflect/is_type_alias2.C
+++ b/gcc/testsuite/g++.dg/reflect/is_type_alias2.C
@@ -15,6 +15,7 @@ template<typename T>
 using V = S<T*>;
 
 typedef int T;
+using W = decltype (sizeof (0));
 
 static_assert (!is_type_alias (^^S<int>));
 static_assert (is_type_alias (^^U));
@@ -22,7 +23,7 @@ static_assert (!is_type_alias (^^V));
 static_assert (is_type_alias (^^V<int>));
 static_assert (is_type_alias (^^T));
 static_assert (!is_type_alias (^^wchar_t));
-static_assert (is_type_alias (^^size_t));
+static_assert (is_type_alias (^^W));
 
 using A = void(int, int);
 static_assert (is_type_alias (^^A));

Reply via email to