lul*_*eta 7 c++ variadic-functions variadic-macros c++11 c++14
我有一个内联的可变参数函数,
inline int foo(...)
我需要foo()调用一个宏(让我们称之为MACRO),这也是可变参数.
基本上我需要foo()将其所有输入参数传递给MACRO.foo()由于__VA_ARGS__选项,重新定义另一个宏将是一个简单的解决方案,但我还需要foo()返回一个值.
注意:我正在尝试连接已编写代码的两部分,我不允许更改它们.foo(...)用于代码的第一部分,并MACRO在第二部分中定义.我应该做的唯一事情是定义一个foo()使用MACRO而我不能,因为它们都是可变的.
创建foo一个包含lambda的宏,该lambda返回一个值,然后调用该lambda.
#define foo(...) \
[&](auto&&...args){ \
/* do something with args, or __VA_ARGS__ */ \
MACRO(__VA_ARGS__); \
return 7; \
}(__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
现在int x = foo(a, b, c);将调用lambda内部foo,并在lambda内部调用宏(a, b, c),并返回一个值.
我很遗憾接下来维护你的代码.