ged*_*ial 5 c++ templates type-traits nullptr
cout << std::is_assignable<int*, std::nullptr_t>::value << endl;
cout << std::is_assignable<int*&, std::nullptr_t>::value << endl;
Run Code Online (Sandbox Code Playgroud)
输出为:0 1
我不明白为什么第一次检查返回false
我可以将nullptr分配给对指针的引用,但是我不能将它分配给原始指针?
这是相反的!
int* p = nullptr;
int*& pref = nullptr;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,第二个赋值标记了一个错误:
错误:不能非const结合左值参考类型的INT*到 右值类型的INT*
有人可以解释一下发生了什么吗?
cppreference 上的文档涵盖了这一点。
std::is_assignable<int, int>是假的,但却std::is_assignable<int&, int>是真的。
http://en.cppreference.com/w/cpp/types/is_assignable