https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108219
Bug ID: 108219 Summary: requirement fails on a valid expression Product: gcc Version: 12.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vanyacpp at gmail dot com Target Milestone: --- This code compiles OK on clang, MSVC and GCC prior to 12: template <typename T> concept test = requires { new T[1]{{ 42 }}; }; struct foobar { foobar(int); }; int main() { static_assert(test<foobar>); new foobar[1]{{ 42 }}; } But on GCC 12 it produces an error: <source>:14:19: error: static assertion failed 14 | static_assert(test<foobar>); | ^~~~~~~~~~~~ <source>:14:19: note: constraints not satisfied <source>:2:9: required by the constraints of 'template<class T> concept test' <source>:2:16: in requirements [with T = foobar] <source>:4:5: note: the required expression 'new T(1)' is invalid, because 4 | new T[1]{{ 42 }}; | ^~~~~~~~~~~~~~~~ <source>:4:5: error: could not convert '<brace-enclosed initializer list>()' from '<brace-enclosed initializer list>' to 'foobar' 4 | new T[1]{{ 42 }}; | ^~~~~~~~~~~~~~~~ | | | <brace-enclosed initializer list> I believe the error is incorrect and that this is a regression in GCC 12.