C++ std::何时可转换;常数类型&;,类型>;是假的吗?

C++ std::何时可转换;常数类型&;,类型>;是假的吗?,c++,typetraits,std-pair,C++,Typetraits,Std Pair,我在阅读std::pair(如上所述)的构造函数规则时,遇到了以下规则: 当且仅当std::is\u convertible\u v为false或std::is\u convertible\u v为false时,此构造函数才显式 std::is_convertable\u v如果From隐式转换为to,则为true,如果不是这样,则为false 但是,在什么情况下,像std::is_v这样的案例会是false? 我已经想了一段时间了,我真的想不出任何即时的。 在我看来,对T类型的常量值的引用总是

我在阅读
std::pair
(如上所述)的构造函数规则时,遇到了以下规则:

当且仅当
std::is\u convertible\u v
false
std::is\u convertible\u v
false
时,此构造函数才显式


std::is_convertable\u v
如果
From
隐式转换为
to
,则为
true
,如果不是这样,则为
false

但是,在什么情况下,像std::is_v这样的案例会是
false
? 我已经想了一段时间了,我真的想不出任何即时的。
在我看来,对
T
类型的常量值的引用总是可以转换为
T
类型的值
std::is\u convertible\u v
检查隐式转换<如果存在
T
的隐式复制构造函数,则code>std::is\u convertible\u v返回
true

struct S {
  explicit S(const S &) = default;
};

S
有一个显式的复制构造函数,因此
std::is\u copy\u constructible\u v
true
但是
std::is\u convertible\u v
false
std::pair
的复制构造函数应该是
explicit
,以匹配
first\u type
的复制构造函数,因此当
std::pair
explicit
时,
isconvertible\v
false

我想这可能是在检查
T
是否为复制是可构造的,但如果是这样,为什么不使用
std::is_copy_constructible_v
?也许它正在检查一个显式的复制构造函数。