저는 The C ++ Programming Language, 4th Edition (by Bjarne Stroustrup )을 읽고 있습니다 .인수 종속 조회. 다음은 인용문입니다 (26.3.6, Overaggressive ADL) :
인수 종속 조회 (종종 ADL이라고 함)는 자세한 정보를 피하는 데 매우 유용합니다 (14.2.4). 예를 들면 :
#include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL }
인수 종속 조회가 없으면
endl
조작자를 찾을 수 없습니다. 그 첫 번째 인수는 것을 컴파일러 공지이므로<<
된다ostream
정의std
. 따라서endl
instd
을 찾아서 찾습니다 (in<iostream>
).
다음 은 컴파일러가 생성 한 결과 입니다 (C ++ 11 모드).
prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
std::cout << "Hello, world" << endl;
^
이것은 컴파일러 또는 책의 버그입니다. 표준은 무엇을 말합니까?
최신 정보:
좀 명확히해야 겠네요. 정답은를 사용하는 것임을 알고 있습니다 std::endl
. 질문은 책의 텍스트에 관한 것이 었습니다. 로 클런 이스턴은 이미 그냥 오타 아니다 말했다. 전체 단락이 (아마도) 잘못되었습니다. 이 책이 다른 (덜 알려진) 저자의 책이라면 이런 종류의 오류를 받아 들일 수 있지만, Bjarne이 저술했기 때문에 나는 여전히 의심 스럽습니다.
std::endl
버그 없음