小编Big*_*eny的帖子

如何在概念中使用 C++ requires 子句来要求成员变量满足概念约束?

我正在观看C++ 20 Concepts Presentation,当我试图重现代码时,我似乎被卡住了。

我试图要求树的根应该满足 MyObjConcept0_,为简单起见,它只是一个 int。为什么当我在 Tree_ 概念的 requires 子句中使用这个概念时,结果是错误的?

我试图直接从演示文稿中复制代码,但仍然没有运气。为什么 { t.root } 子句的返回类型是 int& - 我的意思是这是有道理的,因为当您以这种方式访问​​成员时,您将获得一个引用。

那么如何在 39:00 的演示中出现 this(与 MyObjConcept0_ 相同)需要子句通过?

从本次演示的角度来看,标准是否有所改变,还是我盲目地遗漏了什么?

#include <concepts>
#include <functional>

// Type is an int
template<typename T>
concept MyObjConcept0_ = std::same_as<T,int>;

// Type is any type that decays to int
template<typename T>
concept MyObjConcept1_ = std::same_as<std::decay_t<T>,int>;

// Type is an int&
template<typename T>
concept MyObjConcept2_ = std::same_as<T,int&>;



template<typename T>
concept Tree_ = requires (T t) {
    { t.root …
Run Code Online (Sandbox Code Playgroud)

c++ c++-concepts c++17 c++20

5
推荐指数
1
解决办法
826
查看次数

标签 统计

c++ ×1

c++-concepts ×1

c++17 ×1

c++20 ×1