나는 분명히 뭔가를 놓치고 있지만 왜 이것이 컴파일되는지 이해하지 못한다 (g ++ 및 clang ++로).
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
우선 B
, 값이 아닌 유형입니다. 이 코드를 어떻게 해석해야합니까?
37
이것은 가장 Vexing 구문 분석
—
변경 igel
@alterigel 정말입니까? 이 경우 모호성이 없습니다. 함수 선언 만 가능합니다.
—
호두
A a(B());
변수 정의 또는 함수 선언이 될 수있는 것은 아닙니다 .
@alterigel-이것은 가장 독창적 인 파싱 이 아닙니다 . 링크 한 페이지의 예제를보십시오. 이것은 단순히 함수 선언입니다.
—
Pete Becker
@PeteBecker, 호두가 이미 위와 같다고 생각 하지 않고 왜 이것이 MVP가 아닌지 설명하는 것이 좋습니다 .
—
JPhi1618