Можно ли определить лямбда в C++ со стандартным аргументом по умолчанию?
int main(){
auto lambda = [](auto i = 0){return i;};
std::cout<<lambda()<<"\n"; // this does not compile
std::cout<<lambda(4)<<"\n"; // this does compile
auto lambda2 = [](int i = 0){return i;};
std::cout<<lambda2()<<"\n"; // this is also OK
}
Интересно, можно ли воспроизвести что-то вроде этого функтора, и почему
struct Lambda{
template<typename T=int>
auto operator()(T i=1){ return i;}
};