Сегодня я нашел этот код
#include <cstdio>
auto terminal = [](auto term)
{
return [=] (auto func)
{
return terminal(func(term));
};
};
Удивительно, GCC принимает его. Clang отклоняет его, потому что он использует terminal
в своем собственном intializer и объявляется auto
.
Я ожидал ошибку, которую дал clang, но действительно ли она плохо сформирована? Или код должен быть принят?