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& Toof 不仅受到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 次 |
| 最近记录: |