Mon*_*nad 34 c++ stl rvalue-reference c++-concepts c++20
根据en.cppreference.com(据我所知):
std::is_convertible
被性状类需要类型From
&To
为使得与返回类型的函数To
返回一个From
值可以通过编译。std::convertible_to
是一个概念,要求类型From
&To
如上所述,AND使得类型的r 值引用From
可以转换为static_cast<To>
。强加的要求std::is_convertible
似乎相对简单。相反,对于 C++20 特性的简单示例中显示的这种通用概念,r 值引用转换要求std::convertible_to
似乎奇怪地特定。
作为 C++ 的新手,我无法完全理解两个网页中提供的一些术语和部分补充说明,我无法想象两者的要求之间的确切区别。
一些相互关联的问题:
From
& To
of 不仅受到std::is_convertible
奇怪的 r 值引用转换要求的约束,而且受到奇怪的 r 值引用转换要求的实际影响是什么?From
和To
被附加由R值参考铸件的要求被拒绝?std::is_convertible
或std::convertible_to
中的一个而不是另一个作为其函数返回类型或参数类型的约束(除了概念的便利性)?一个更简单的解释或一个例子会有所帮助。谢谢!
Bar*_*rry 32
std::is_convertible<From, To>
(类型特征)检查 typeFrom
是否可以隐式转换为 type To
。
std::convertible_to<From, To>
(概念)检查From
可隐式和显式转换为To
. 这种情况很少见,这种类型很荒谬,但是在通用代码中不必担心这种情况很好。
一个例子:
struct From;
struct To {
explicit To(From) = delete;
};
struct From {
operator To();
};
static_assert(std::is_convertible_v<From, To>);
static_assert(not std::convertible_to<From, To>);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1538 次 |
最近记录: |