나는 최근에 다음과 같은 난해한 코드를 보았습니다.
int main(){(([](){})());}
더 읽기 쉽게하려면 다음과 같이 다시 포맷하십시오.
int main(){
(([](){})()); // Um... what?!?!
}
그러나 (([](){})())
유효한 코드가 어떻 습니까?
- 함수 포인터 구문처럼 보이지 않습니다.
- 연산자 오버로드 트릭이 될 수 없습니다. 코드는 그대로 컴파일됩니다.
Google은이 모든 기호 검색에 큰 도움이되지 않았습니다. 그러나 Visual Studio 2010에서 컴파일되어 아무것도 출력하지 않습니다. 오류와 경고가 없었습니다. 따라서 유효한 코드처럼 보입니다.
Javascript 및 C 함수 포인터 외부에서 기괴한 유효한 코드를 본 적이 없습니다 .
누군가 이것이 이것이 어떻게 유효한 C ++인지 설명 할 수 있습니까?
@Mysticial-이 코드는 쓸모가 없기 때문에 당신을 신비하게 만듭니다. 이 람다가 무언가를 할 경우, 함수 포인터와 비슷한 구문을 가지고 있음을 알 수 있습니다 (밀접하게 관련되어 있음).
—
SChepurin
@Mysticial- "6 년의 C ++"-람다는 C ++ 11에 방금 추가되었으므로 1 년 전이나 그 어느 누구도 경험이 없습니다.
—
피트 베커
여기 URL은 아주 재미 있습니다 : "how-is-int-main-valid-c"
—
tckmn
Don't sweat it. We have int main(){(([](){})());} which is valid C++"
(11 월 9 일 채팅)