https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81202
Bug ID: 81202
Summary: Concept parsing error for default template arguments
Product: gcc
Version: 7.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: kmp53 at sina dot com
Target Milestone: ---
I found an parsing error for the default template parameter for Concept, and
the same syntax is correct in constexpr.
template<class T,class AT=void> constexpr bool
IsPtrC=std::is_pointer_v<T>&&(std::is_same_v<AT,void>
||std::is_same_v<AT,std::remove_pointer<T>>);
template<class T,class AT=void> concept bool IsPtrC2=IsPtrC<T,AT>;
tple<bool B> using TEST=int;
int main(int argc,char*argv[]){
TEST<IsPtrC<int>> i;//OK
TEST<IsPtrC2<int>> j;//error: parse error in template argument list
TEST<IsPtrC2<int,void>> k;//OK
TEST<(IsPtrC2<int>)> l;//OK
}