2012-04-19 5 views
7

개별 C++ 0x/C++ 11 언어 기능이 있는지 어떻게 확인합니까? 나는 Clang이 이것을위한 좋은 시스템을 가지고 있다는 것을 알고있다. GCC, Visual Studio 또는 Boost는 어떻습니까? 나는 그것을 할 수있는 한 가지 방법은 컴파일러 버전을 감지하고 그 버전에 도입 된 기능과 관련시키는 것입니다. 그러나 그것은 성 가시다. 누군가 이미 그 일을 했습니까?C++ 11 기능 검사

+1

직접적인 대답은 해당 기능이있는 코드를 작성하고 컴파일하는 것입니다. – iammilind

+0

이 질문을 왜 닫아야합니까? –

+0

@ Nordlöw : 두 사람이 [이 질문] (http://stackoverflow.com/q/6095885/636019)의 중복으로 투표를 마감했습니다. – ildjarn

답변

3

boost config에는 일부 C++ 11 기능 만 검사하는 스크립트가 포함되어 있습니다.

각 기능마다 매크로가있는 구성 파일을 생성합니다.

+0

나는 너를 무언가를 쓰기 위하여 의미했다는 것을 생각한다 * See : *. 어쨌든, 예. Boost.Config가 아마도 최선의 방법 일 것입니다. Boost 팀원은 이미 정보를 추적하므로 개발자가 컴파일러가 광고를하기에 충분히 안정적 이었는지 또는 Clang이 새 검사 플래그를 요청했는지 정확하게 알 수 있어야합니다. –

+0

실제로 그것은 초안 - 답변에서 남은 것이 었습니다. 나는 그것을 지울 것이다. 감사. – mirk

3

빌드 툴이 도움을 줄 수 있습니다.

CMake는 컴파일 결과에 따라 코드 샘플이 컴파일되고 변수가 설정되는지 테스트 할 수있는 try_compile 명령을 가지고 있습니다.

지금은 auto과 같이 일반적으로 지원되는 기능을 사용하고 있습니다.

자주 부스트를 사용하여 누락 된 라이브러리 기능을 대체 할 수 있으며 컴파일러와 라이브러리가 업데이트되고 버그가 수정되는 동안 몇 년 동안이 옵션이 가장 적합 할 수 있습니다.

GCC의 C++ 11 기능 호환성 목록

은 여기에 있습니다 : http://gcc.gnu.org/projects/cxx0x.html

참고 경고 :

중요 : C++ 11 GCC의 지원은 아직 실험. 일부 기능은 초기 제안을 기반으로 구현되었으며 마지막 C++ 11 표준과 일치하도록 업데이트 될 때 이전 버전과의 호환성을 유지하려고 시도하지 않습니다.