https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897
Bug ID: 115897 Summary: [14/15 Regression] __is_same fails for vector builtin Product: gcc Version: 14.1.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mkretz at gcc dot gnu.org Target Milestone: --- Test case (https://compiler-explorer.com/z/6dWYMdcef): --------------------------------------------------- template <typename _Tp, typename _Up> constexpr bool is_same_v = __is_same(_Tp, _Up); template <typename _Tp> using _Vp [[gnu::vector_size(16)]] = _Tp; static_assert(sizeof(_Vp<float>) == 16); static_assert(not is_same_v<float, _Vp<float>>); template <typename _Tp> struct Test { static_assert(sizeof(_Vp<_Tp>) == 16); static_assert(not is_same_v<_Tp, _Vp<_Tp>>); }; Test<float> x; --------------------------------------------------- Here the first 'is_same_v' assertion passes but the second assertion fails, even though both are testing '__is_same(float, _Vp<float>)'. Note that _Vp<_Tp> appears to still be a vector builtin inside of 'Test<float>' (sizeof assertion passes).