Код: Выделить всё
template
int foo(Callable callable)
{
static_assert(callable());
return 0;
}
static const auto r = foo([] { return true; });
Разве не запрещено использовать параметр функции в константном выражении (static_assert)?
Это запрещено для структурных типов, но кажется приемлемым для лямбда-выражений, как только они передаются по значению.
Все gcc, clang и msvc принимают его, так что это может быть каким-то образом законно. Я просто не могу найти никаких ссылок, почему это действительно.
Подробнее здесь: https://stackoverflow.com/questions/797 ... expression
Мобильная версия