2016-07-20 1 views
1

GCC 6.1을 사용하여 개념 TS가 있음을 어떻게 감지 할 수 있습니까?GCC 6.1에서 개념 TS 감지

This page은 매크로 __cpp_experimental_concepts이 개념 TS 지원 구현에서 사전 정의되어야 함을 제안합니다.

#ifdef __cpp_experimental_concepts 
static_assert(false, "Concepts TS found"); 
#endif 

template <typename T> 
concept bool Identity = true; 

int main() {} 

(. 나는 static_assert는 화재 중 기대, 또는 concept 키워드가 인식 할 수없는 이동)

사람이 알고 있나요 : 그러나 다음 테스트 프로그램은 -fconcepts 플래그 GCC 6.1에 오류없이 컴파일 개념을 사용할 수 있는지 여부에 따라 코드를 조건부로 컴파일하는 다른 방법

+3

매크로는 'echo | g ++ -E -dM -fconcepts -x C++ - | fgrep concepts' –

답변

4

올바른 매크로는 GCC에 대한 __cpp_concepts입니다 :

#ifdef __cpp_concepts 
static_assert(false, "Concepts TS found"); 
#endif 

this에 따르면, 매크로의 이름은 최근 초안에 변경되었습니다.

올바른 이름은 GCC support page (Jonathan Wakely 덕분에)에서하지만 linked draft (2015년 2월 9일는) 아직 (... 이상입니다) __cpp_experimental_concepts이 필요합니다. 그러나이 more recent draft (2015-09-25)의 이름은 실제로 __cpp_concepts으로 변경되었습니다.

+0

더 이상 TS라고 생각할 때 더 이상 실험적으로 간주되지 않지만, 이것은 내가 필요한 것입니다. 빠른 응답을 주셔서 대단히 감사합니다. –

+4

매크로 및 공식 값은 https://gcc.gnu.org/projects/cxx-status.html#tses에 문서화되어 있습니다 (g ++은 현재 201507이 아닌 201500으로 설정되어 있습니다). –

+0

@JonathanWakely 이 값은'__cpp_experimental_concepts'가 여전히 사용 된 오래된 초안에서 나온 것이기 때문에 여기에 불일치가 있습니다. – Holt