const // It is a const object...
class nullptr_t
{
public:
template<class T>
inline operator T*() const // convertible to any type of null non-member pointer...
{ return 0; }
template<class C, class T>
inline operator T C::*() const // or any type of null member pointer...
{ return 0; }
private:
void operator&() const; // Can't take address of nullptr
} nullptr = {};
Run Code Online (Sandbox Code Playgroud)
operator T*() const并且operator T C::*() const已经在类中定义,因此它可以自动内联.那么,为什么inline要再添加?void operator&() const;,不是void operator&() = delete吗?nullptr = {};意思?Sto*_*ica 17
添加额外的内联是一种风格问题.该说明符与链接和ODR违规有关,而不是实际内联.所有内联成员函数定义和模板成员函数通常都隐式具有该说明符.我认为Scott Meyers是出于教学原因而在那里加入的.
有效的C++最初是为C++ 03编写的.那时没有= delete了.声明但没有定义函数就是你当时可以做的.
这是聚合初始化.nullptr_t即使在C++ 03 中也可以像这样初始化这种实现.它创造了价值nullptr.由于nullptr_t没有用户提供的默认c'tor,因此需要.
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |