使用GCC 6.1检测概念TS

时间:2016-07-20 11:13:55

标签: c++ g++ c++-concepts

如何使用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是否可用来有条件地编译代码的任何其他方法?

1 个答案:

答案 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