如何使用GCC 6.1检测概念TS的存在?
This page建议宏__cpp_experimental_concepts
应该在支持Concepts TS的实现中预定义。但是,以下测试程序使用-fconcepts
标志在GCC 6.1上编译时没有错误:
#ifdef __cpp_experimental_concepts
static_assert(false, "Concepts TS found");
#endif
template <typename T>
concept bool Identity = true;
int main() {}
(我希望触发static_assert
,或concept
关键字无法识别。)
有没有人知道根据Concept是否可用来有条件地编译代码的任何其他方法?
答案 0 :(得分:4)
对于GCC,正确的宏是__cpp_concepts
:
#ifdef __cpp_concepts
static_assert(false, "Concepts TS found");
#endif
根据this,在最近的草稿中更改了宏的名称。
正确的名称来自GCC support page(感谢Jonathan Wakely),但linked draft(2015-02-09)仍然需要__cpp_experimental_concepts
(这很奇怪。 ..)。但是,在此more recent draft(2015-09-25)中,该名称实际上已更改为__cpp_concepts
。