https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104138

            Bug ID: 104138
           Summary: ICE when lambda is passed as parameter
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nickhuang99 at hotmail dot com
  Target Milestone: ---

Considering following valid code which compiles with clang13. It defines a
concept to restrict template parameter as type of lambda. Then the concept is
used to constraint class A to have a lambda as constructor parameter. The ICE
happens when a lambda object is passed to constructor of A.  


#include<type_traits>

using Lambda=decltype(+[](){});
template<typename T>
concept IsLambda=std::is_same<decltype(+[](){}), T>::value;

template<IsLambda L>
struct A{
    A(L lam){
        lam();
    }
};
auto lam=+[](){};
auto a=A<Lambda>(lam);



https://www.godbolt.org/z/Pxv95Eb14

Reply via email to