erichkeane added inline comments.
================ Comment at: clang/test/SemaTemplate/concepts.cpp:63 template<typename T> concept C = true; - template<template<typename T> requires C<T> typename U> struct X {}; // expected-error {{requires 'class'}} expected-error 0+{{}} + template<template<typename T> requires C<T> typename U> struct X {}; template<typename T> requires C<T> struct Y {}; ---------------- erichkeane wrote: > Seemingly if "X" contains U<int>, the constraint should be checked (according > to EWG). > > Based on reflector conversations, it seems this should ALSO be checked in: > > http://eel.is/c++draft/temp.arg.template#3 > and > http://eel.is/c++draft/temp.arg.template#4 > , particularly the 'rewrite to function templates in /4 should produce a > constrained function template, and the 'at least as specialized' check takes > these into consideration. > > They are ALSO considered in partial ordering. That example(X has a U<int> in it) asserts against `main` since it causes us to not properly instantiate the constraints. On top of my 'deferred constraints instantiation' patch (https://reviews.llvm.org/D119544 ) it fails to diagnose (consistent with GCC, but not EDG). CHANGES SINCE LAST ACTION https://reviews.llvm.org/D110641/new/ https://reviews.llvm.org/D110641 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits