这是多么令人烦恼的解析?

How is this a most vexing parse?

我正在经历这个article

并且在第 3 项中有一个声明说

// C++98 
rectangle       w( origin(), extents() );       // oops, vexing parse

以上是多么令人头疼的解析。如果我做了这样的事情

struct origin
{
};
struct Rectangle
{
    Rectangle(const origin& s)
    {
    }
};

声明

 Rectangle s(origin());    

工作正常,不像一个令人烦恼的解析。 为什么作者说这是一个令人讨厌的解析。是错字还是我遗漏了什么?

Rectangle s(origin()); 也是一个令人烦恼的解析。它声明了一个函数 s,其中 returns rectangle,并将返回 origin 的函数指针作为参数指针。不确定 "works fine".

是什么意思

rectangle w( origin(), extents() ); 声明一个函数 w 返回 rectangle 并接受参数:指向函数返回 origin 的指针和指向函数返回 extents 的指针。

有关 see this question or browse the other questions under the 标签的更多详细信息。