Я получаю сообщение об ошибке с последними версиями clang и gcc с этим кодом:
int main() {
auto lambda = [] (auto = [] {}) {};
lambda();
}
Clang дает ошибку:
prog.cc: In function 'int main()':
prog.cc:3:12: error: no match for call to '(main()::<lambda(auto:1)>) ()'
lambda();
^
prog.cc:2:35: note: candidate: template<class auto:1> main()::<lambda(auto:1)>
auto lambda = [] (auto = [] {}) {};
^
prog.cc:2:35: note: template argument deduction/substitution failed:
prog.cc:3:12: note: couldn't deduce template parameter 'auto:1'
lambda();
^
Почему это не удается?