`Требуется выражения и пространства имен функций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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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