[Bug c++/109181] New: requires expression type requirement rejects valid type when it is a nested member template
waffl3x at protonmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Mar 18 06:23:03 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109181
Bug ID: 109181
Summary: requires expression type requirement rejects valid
type when it is a nested member template
Product: gcc
Version: 10.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: waffl3x at protonmail dot com
Target Milestone: ---
https://godbolt.org/z/5hG9Eqhc9
struct A {
template<typename>
using B = int;
};
inline constexpr bool go = requires{typename A::template B<int>;};
error: 'typename A::B' names 'template<class> using B = int', which is not a
type
I believe this is not a regression as the bug exists all the way back to 10.1
(assuming I understand what regression means)
Clang and MSVC accept this code, I assume GCC is incorrect since I couldn't
find anything specifying that a member template is not allowed, however I also
haven't found anything that specifies that it is allowed so I am not certain.
The behavior exists in all versions I checked since GCC 10.1
More information about the Gcc-bugs
mailing list