Следующий код будет вызывают нарушение прав доступа с MSVC, но прекрасно работает с gcc и clang.
Код: Выделить всё
#include
template auto inner = []()
//template void inner()
{
std::map x;
x.clear(); // Will cause an access violation
};
template auto outer = []()
//template void outer()
{
inner();
};
int main()
{
outer();
}
Если вы раскомментируете строки, в которых я заменяю общие лямбды на стандартные общие функции, все работает нормально.
Я делаю что-то ужасно неправильно?
Изменить: удалены более короткие примеры, о которых я сообщил слишком рано.
Подробнее здесь: https://stackoverflow.com/questions/783 ... imal-repro