Как использовать 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

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