Как использовать C ++, требует пункта в концепции, требующей переменной члена для удовлетворения концепции ограничения?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать C ++, требует пункта в концепции, требующей переменной члена для удовлетворения концепции ограничения?

Сообщение Anonymous »

Я смотрел презентацию концепций C ++ 20, и при попытке воспроизвести код, который, кажется, застрял. Почему, когда я использую эту концепцию в предложении «Требуется концепция», результаты неверно? Почему тип возврата предложения {t.root} int & - я имею в виду, что это имеет смысл, потому что, когда вы получаете доступ к участнику, вы получаете ссылку. < /P>
Так как же в представлении в 39:00. Что -то? < /p>
#include
#include

// Type is an int
template
concept MyObjConcept0_ = std::same_as;

// Type is any type that decays to int
template
concept MyObjConcept1_ = std::same_as;

// Type is an int&
template
concept MyObjConcept2_ = std::same_as;

template
concept Tree_ = requires (T t) {
{ t.root } -> MyObjConcept0_; // does not work : This is the concept I want to use
{ t.root } -> MyObjConcept1_; // works but will pass for int and int& : unsafe
{ t.root } -> MyObjConcept2_; // works but checks that t.root is an int&
std::same_as; // works: verbose and not a concept
};

template
struct tree {
MyObjConcept0T root;
};

static_assert(Tree_);


Подробнее здесь: https://stackoverflow.com/questions/633 ... able-to-sa
Ответить

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

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

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

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

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