Почему это не компилируется с CLang 7 и ниже, но компилируется с CLang 8 и выше:
#include <map>
#include <string>
typedef std::map<std::string, int> TestMap;
TestMap m {
{"a", 1},
{"b", 2},
{"c", 3},
};
auto func = [](const TestMap::value_type & p) -> int { return p.second; };
auto func1 = func;
//In CLang 7 and lower copy assignment operator is not defined
func = func1;
что на самом деле изменилось?
Но это компилируется со всеми версиями CLang:
auto func1 = []() { return 5;};
decltype(func1) func2 = func1;
func2 = func1;
Весь пример кода доступен здесь
В чем разница между лямбдами?