gpt4 book ai didi

c++ - 为什么只有一个参数的宏除了双括号外不能按预期工作?

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:12 24 4
gpt4 key购买 nike

<分区>

#include <type_traits>

using namespace std;

template<class T, class = typename enable_if<is_same<T, char>::value>::type> // OK
struct A {};

#define ENABLE_IF(expr) class = typename enable_if<expr>::type

template<class T, ENABLE_IF((is_same<T, char>::value))> // OK
struct B {};

template<class T, ENABLE_IF(is_same<T, char>::value)> // warning C4002 and error C1004
struct C {};

int main()
{}

我的编译器是 VC++ 2013 RC。

ENABLE_IF(x) 没有按预期工作:

warning C4002: too many actual parameters for macro 'ENABLE_IF' fatal

error C1004: unexpected end-of-file found

然而 ENABLE_IF((x)) 工作正常。

为什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com