-
Notifications
You must be signed in to change notification settings - Fork 46
Open
Description
There are issues in the interaction between the concept constraints in meta and the lambda implementation that need to be investigated. Concepts are applied when forming a template-id, even before instantiation, so e.g.:
template<class> concept Foo = false;
template<Foo T> struct X;
using U = X<int>; // ill-formed despite not instantiating X<int>Yet the implementation of lambdas relies on the ability to name "invalid" specializations which are later pattern-matched and substituted into valid specializations. GCC's concept implementation is lax enough that we've been getting by with some cheating in cmcstl2, but clang-concepts (and I suspect other implementations of C++20 concepts) refuses to compile the lambda test cases in meta.cpp.
Metadata
Metadata
Assignees
Labels
No labels