std::is_assignable<int, int>::value == false 在一致的实现中(例如clang/libc ++,gcc/libstdc ++,但不是VS2012).
直觉上,这意味着诸如int x = 3;无效的表达.但是is_assignable赋值的双方都被转换为的状态的规范std::add_rvalue_reference<T>::type,因此std::is_assignable<int, int>::value必须求值false(因为int+ &&- > int&&,这是一个无法分配的右值).
为什么std::is_assignable这样设计,或者我误解了什么是is_assignable<int, int>::value真正的意思?
相关讨论: