cout << std::is_assignable<int*, std::nullptr_t>::value << endl;
cout << std::is_assignable<int*&, std::nullptr_t>::value << endl;
输出为: 0 1
我不明白为什么第一次检查会返回 false
我可以将 nullptr 分配给对指针的引用,但我无法将其分配给原始指针?
反过来了!
int* p = nullptr;
int*& pref = nullptr;
第二个赋值正如预期的那样标记错误:
错误:无法将 int *&amp; 类型的非常量左值参考绑定到 int *
类型的右值
有人可以解释一下发生了什么吗?
答案 0 :(得分:2)
关于cppreference的文档涵盖了这一点。
std::is_assignable<int, int>
为false,但std::is_assignable<int&, int>
为真。