예를 들어 다음과 같은 선언이 있습니다.
int (x) = 0;
또는 그것도 :
int (((x))) = 0;
내 코드에서 다음과 유사한 조각이 발생했기 때문에 이것을 우연히 발견했습니다.
struct B
{
};
struct C
{
C (B *) {}
void f () {};
};
int main()
{
B *y;
C (y);
}
분명히 나는 C
소멸자에서 유용한 일을 할 객체 를 만들고 싶었습니다 . 그러나 컴파일러는 유형 C (y);
이있는 변수의 선언으로 취급 하므로 재정의에 대한 오류를 인쇄합니다 . 재미있는 것은 내가로 작성하는 경우이다 또는 무언가로 같이 가 의도 한대로 컴파일. 가장 현대적인 해결 방법은 물론 생성자 호출 에 사용하는 것 입니다.y
C
y
C (y).f ()
C (static_cast<B*> (y))
{}
그래서 내가 그 후에 알아 냈 듯이 변수를 같은 int (x) = 0;
또는 심지어 선언하는 것이 가능 int (((x))) = 0;
하지만 실제로 이와 같은 선언을 사용하는 사람을 본 적이 없습니다. 그래서 저는 관심이 있습니다. 현재로서는 악명 높은 "가장 성가신 구문 분석"과 유사한 경우 만 생성하고 유용한 것은 추가하지 않기 때문에 그러한 가능성의 목적은 무엇입니까?