【发布时间】:2019-02-25 00:27:15
【问题描述】:
更具体的原因
std::is_assignable_v<int, int> << '\n';
返回false?是不是因为 int 没有重载的赋值运算符(作为原始类型和所有类型)?
(顺便说一句,std::is_trivially_assignable_v<int, int> 也给了false。)
请注意:
struct Structure {};
std::is_assignable<class Structure, class Structure>::value;
将返回true,因为为Structure 隐式定义了重载赋值运算符。
到目前为止我是正确的吗?如果是这样,那么我想增强is_assignable 以接受原始类型也不是一件容易的事吗?否则,对这种可能的解决方法有任何提示吗?
【问题讨论】:
-
你可以检查类型是
is_fundemental还是is_assignable
标签: c++ assign assignment-operator overloading