Home | History | Annotate | Download | only in dcl.spec.concept
      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