![]() |
1
48
灵感来自 chris's answer . 1.
如果
编辑:作为
Edward Diener's answer
注释,GCC>=8在看到时发出警告或错误
正如chris提到的,如果
|
![]() |
2
10
虽然您可能能够改进,但以下内容应该可以奏效:
在Clang trunk上,在C++2a模式下计算为1,在C++17模式下计算为0。在C++17中,GCC trunk实际上将其计算为1,但也处理
它的用途是
当然,这是一种激励。PP依赖项不是强制性的。一个简单的1或2参数
Clang有一个便携性警告:
我不知道如果没有C++11可变宏支持,这种检测是否可能实现。你可以考虑不支持
|
![]() |
3
6
上面最流行的答案中指定的解决方案的问题是,如果在C++20模式之外使用\uu VA\u OPT\uuuu,编译器可以自由发出警告,甚至错误,因为该字是编译器保留字,因为它以双下划线开始和结束。事实上,我发现gcc会根据所使用的编译器选项发出警告或错误,尽管在大多数编译情况下通常不会发出警告或错误。由于这一点,任何具有当前C++20测试的解决方案,例如:
是一种更保守的解决方案,尽管它将测试限制在C++20或更高版本。 |
![]() |
4
1
如另一个答案所述,你可以自己写
和
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |