1 | // RUN: %clang_cc1 -std=c++14 -fconcepts-ts -x c++ -verify %s |
2 | |
3 | template <typename T> concept bool FCEI() { return true; } // expected-note {{previous declaration is here}} expected-note {{previous declaration is here}} |
4 | template bool FCEI<int>(); // expected-error {{function concept cannot be explicitly instantiated}} |
5 | extern template bool FCEI<double>(); // expected-error {{function concept cannot be explicitly instantiated}} |
6 | |
7 | template <typename T> concept bool FCES() { return true; } // expected-note {{previous declaration is here}} |
8 | template <> bool FCES<int>() { return true; } // expected-error {{function concept cannot be explicitly specialized}} |
9 | |
10 | template <typename T> concept bool VC { true }; // expected-note {{previous declaration is here}} expected-note {{previous declaration is here}} |
11 | template bool VC<int>; // expected-error {{variable concept cannot be explicitly instantiated}} |
12 | extern template bool VC<double>; // expected-error {{variable concept cannot be explicitly instantiated}} |
13 | |
14 | template <typename T> concept bool VCES { true }; // expected-note {{previous declaration is here}} |
15 | template <> bool VCES<int> { true }; // expected-error {{variable concept cannot be explicitly specialized}} |
16 | |
17 | template <typename T> concept bool VCPS { true }; // expected-note {{previous declaration is here}} |
18 | template <typename T> bool VCPS<T *> { true }; // expected-error {{variable concept cannot be partially specialized}} |
19 | |