- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 std::pair
的构造函数规则(如 cppreference 上所述)当我遇到此裁决时:
This constructor is explicit if and only if
std::is_convertible_v<const first_type&, first_type>
isfalse
orstd::is_convertible_v<const second_type&, second_type>
isfalse
.
std::is_convertible_v<From, To>
是 true
如果From
可以隐式转换为 To
,和false
如果情况并非如此。
但是什么情况下会出现std::is_convertible_v<const T &, T>
这样的情况?是false
?我想了一会儿,但实际上我暂时想不出任何办法。在我看来,对 T
类型的 const 值的引用总是可以转换为 T
类型的值.
最佳答案
std::is_convertible_v
检查隐式转换。 std::is_convertible_v<const T &, T>
返回true
如果 T
存在隐式复制构造函数.
struct S {
explicit S(const S &) = default;
};
S
有一个显式的复制构造函数,所以 std::is_copy_constructible_v<S>
是 true
但是std::is_convertible_v<const S &, S>
是 false
。 std::pair
的复制构造函数应该是explicit
匹配 first_type
的复制构造函数所以 std::pair
的复制构造函数是有意义的是 explicit
当std::is_convertible_v<const first_type &, first_type>
是 false
.
关于c++ - std::is_convertible_v<const type &, type> 何时为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58722313/
我想检查参数列表是否可以转换为 size_t 。我认为 std::is_convertible_v 可能是 STL 的正确工具。这是我的想象(这是错误的): #include template co
我正在开发一个 C++ 项目,该项目需要使用类型自省(introspection)来确定模板的对象类型。这样做时,我遇到了一个不寻常的问题。我将根本问题归结为 std::is_convertible_
我正在阅读 std::pair 的构造函数规则(如 cppreference 上所述)当我遇到此裁决时: This constructor is explicit if and only if std
我是一名优秀的程序员,十分优秀!