내부의 범위. 내가 GCC를 시도 할 때, 내가 얻을 :사용하여 템플릿의 내가 다음 코드가 있다고 가정 해 봅시다 기능
foo
세계적 범위가 그 유형이 이름이
$ g++ --version # just in case this matters
g++ (Debian 4.4.5-8) 4.4.5
...
$ g++ foo.cc
foo.cc: In function 'void g()':
foo.cc:7: error: no matching function for call to 'f(g()::<anonymous struct>&)'
이 작동합니다. 그러나 형식이 익명 인 경우 또는 안에 g()
으로 선언되어 있지 않습니다.
왜 GCC에서이를 거부합니까? C++이 유효합니까?
실망 스럽습니다. 이것은 예를 들어 C++의 클로저 부족에 대한 실행 가능한 대안이었을 것입니다. –
그런 간단한 답변에 감사드립니다. 나에게이 사용법은 언어의 "정신"에 맞는 것처럼 보이지만 구현자가 약간의 번거 로움을 덜어주기 위해 이것이 왜 범위가 지정되었는지도 알 수 있습니다. – asveikau
. 그것은 끔찍한 하나의 구조체로 전역 또는 다른 네임 스페이스를 혼란스럽게 만들 수 있습니다. 단지 하나의 함수로 한번만 사용하면됩니다. – stijn