2016-11-08 3 views
3

으로 CPP Docstd::greater<functional> 헤더에 정의되어 있지만 std::greater를 사용하여 내 C++ 프로그램은 TDM-GCC-64 5.1.0로 컴파일 만 다음에 실행이 포함C++ 프로그램 컴파일이

#include <cmath> 
#include <cstdio> 
#include <vector> 
#include <iostream> 
#include <algorithm> 
#include <unordered_map> 

<algorithm>이 자동으로 <functional>을 포함하고 있기 때문일 수 있습니다. 그러나 이것은 문서에 언급되어 있지 않기 때문에이 문제를 사전에 알 수있는 방법이 있는지 궁금합니다.

+6

아니요 구현 세부 정보가 구현 정보이므로 알 수있는 방법이 없습니다. C++ 표준을 따르고 휴대하기를 원할 경우 필요한 함수와 클래스에 필요한 헤더 파일을 항상 포함시켜야합니다. –

+0

이 구현에 의존하지 않을 것으로 예상했다. 나는 머리말의 정의가 표준이 될 것이라는 인상하에 있었고 수입에 있어서도 암묵적인 계층 구조가 존재할 것이라는 인상을 받았다. –

+0

iostream은 평범한 것입니다. 많은 헤더를 혼자서 저어냅니다. 구현 세부 사항을 알 수 있습니다. 헤더를 살펴보십시오. 위험은 소스 파일이 다른 컴파일러에서 컴파일되지 않는다는 것입니다. 아니 물론, 쉽게 해결할 수 있습니다. –

답변

0

주제를 닫기 만하면 결론은 구현에 의존하며 모든 필요한 헤더가 이식성을 위해 포함되어야한다는 것입니다.