`Требуется выражения и пространства имен функцийC++

Программы на C++. Форум разработчиков
Anonymous
`Требуется выражения и пространства имен функций

Сообщение Anonymous »

Как я могу определить ограничение C ++, которое включает в себя функцию, определенную пространством именами? Пример: < /p>

Код: Выделить всё

template
concept C = requires(T t) {
{ N::foo(t) } -> std::same_as;
};

struct S {};

namespace N {
void foo(S) {}
}

static_assert(C);
Требования заключаются в том, что S должен находиться в глобальном пространстве имен, тогда как foo должен находиться в пределах n .
концептуально (каламбур), s выполняет concept c . Но код не компилируется, потому что n :: не имеет смысла для компилятора, когда концепция определена. И, конечно же, FWD-декорация void foo (s) в пространстве имен n до того, как определение концепции не станет опцией, потому что я не могу знать тип s заранее. Что мне здесь не хватает? Я пытался определить это в n , но это не помогает.

Подробнее здесь: https://stackoverflow.com/questions/796 ... namespaces

Вернуться в «C++»