Существует 3 аналогичных случая, на основе требуется -expression:
Код: Выделить всё
class A { void f(); };
// #1: accepted by all
static_assert( { return requires(decltype(x) a){ a.f(); }; }(A{}) );
// #2: rejected by Clang:
static_assert( { return requires(A a){ a.f(); }; }(nullptr) );
// #3: rejected by all
static_assert( !requires(A a){ a.f(); } );
< /code>
case #3 (и #2 в Clang) отклоняется с ошибкой: < /p>
error: 'f' is a private member of 'A'
Подробнее здесь: https://stackoverflow.com/questions/707 ... mplate-for
Мобильная версия