x > y > new T 的可能含义:语法

Possible meaning of x > y > new T : syntax

我正在阅读 this article 有关最有用的 C++11 功能的内容,我在最后一节中遇到了这段代码:

 if(_size != copy._size)
 {
    _buffer = nullptr;
    _size = copy._size;
    _buffer = _size > 0 > new T[_size] : nullptr;
 }

我习惯于将最后一行视为 (_size > 0) > other_Value 但在这种情况下,右操作数是 new 声明。我真的无法理解它的意义。另外, : nullptr 指的是什么?是否有初始化为 nullptr 的东西?如果是,是什么?

我认为这是错误的片段。应该是

_buffer = _size > 0 ? new T[_size] : nullptr;

这基本上是三元运算符。如果 _size > 0,那么将分配大小为 _size 的 T 数组的内存,否则 nullptr 将分配给 _buffer。而且它不是 C++11 的特性,因为在 C++98 中它可以只是

_buffer = _size > 0 ? new T[_size] : 0; // or NULL, or (void*)0.