diff options
author | Saar Raz <saar@raz.email> | 2020-01-22 04:21:09 +0200 |
---|---|---|
committer | Saar Raz <saar@raz.email> | 2020-01-24 02:28:32 +0200 |
commit | 29f14c1df25992db8c908e441c69e1fd4d4e4010 (patch) | |
tree | c4f05cf40010d90203cf59ed256ae9fecf1a4c94 /clang/test/CXX | |
parent | a9b2cf6c625ab15e3cef00350c855e7cd319cf83 (diff) | |
download | bcm5719-llvm-29f14c1df25992db8c908e441c69e1fd4d4e4010.tar.gz bcm5719-llvm-29f14c1df25992db8c908e441c69e1fd4d4e4010.zip |
[Concepts] Implement P1616R1 - Using unconstrained template template parameters with constrained templates
Summary: Allow unconstrained template template parameters to accept constrainted templates as arguments.
Reviewers: rsmith
Subscribers: cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D73155
(cherry picked from commit d42d5eb8ea77b3a3a502a60ba3f053fb81a897f3)
Diffstat (limited to 'clang/test/CXX')
-rw-r--r-- | clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp b/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp index 593336163fa..e7feae31889 100644 --- a/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp +++ b/clang/test/CXX/temp/temp.arg/temp.arg.template/p3-2a.cpp @@ -7,9 +7,9 @@ template<typename T> concept F = T::f(); // expected-note@-1{{similar constraint expressions not considered equivalent}} template<template<C> class P> struct S1 { }; // expected-note 2{{'P' declared here}} -template<C> struct X { }; // expected-note{{'X' declared here}} +template<C> struct X { }; -template<D> struct Y { }; // expected-note 2{{'Y' declared here}} +template<D> struct Y { }; // expected-note{{'Y' declared here}} template<typename T> struct Z { }; template<F> struct W { }; // expected-note{{'W' declared here}} @@ -18,10 +18,10 @@ S1<Y> s12; // expected-error{{template template argument 'Y' is more constrained S1<Z> s13; S1<W> s14; // expected-error{{template template argument 'W' is more constrained than template template parameter 'P'}} -template<template<typename> class P> struct S2 { }; // expected-note 2{{'P' declared here}} +template<template<typename> class P> struct S2 { }; -S2<X> s21; // expected-error{{template template argument 'X' is more constrained than template template parameter 'P'}} -S2<Y> s22; // expected-error{{template template argument 'Y' is more constrained than template template parameter 'P'}} +S2<X> s21; +S2<Y> s22; S2<Z> s23; template <template <typename...> class C> |