为何std::assignable_from概念与同名std::is_assignable类型特性行为差异显著?
为何
std::assignable_from概念与同名类型特性std::is_assignable行为差异巨大? 在C++标准库中,多数同名的类型特性与对应的概念行为保持一致,比如以下示例:
static_assert(not std::is_convertible_v<char, std::string>); // ok static_assert(not std::convertible_to<char, std::string>); // ok static_assert(not std::is_constructible_v<std::string, char>); // ok static_assert(not std::constructible_from<std::string, char>); // ok
但std::assignable_from概念与std::is_assignable类型特性却表现出明显差异:
static_assert(std::is_assignable_v<std::string&, char>); // ok static_assert(std::assignable_from<std::string&, char>); // fail
我想知道的是:为何标准库没有选择调整std::is_assignable使其行为贴合std::assignable_from,或是直接为std::assignable_from更换一个不同的名称?
注意:我并非询问二者行为差异的具体原因,而是想了解标准库设计时选择这种不一致命名与行为的考量。
内容的提问来源于stack exchange,提问作者303
相关产品推荐
相关产品推荐

