找出可变参数宏中__VA_ARGS__的类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出可变参数宏中__VA_ARGS__的类型相关的知识,希望对你有一定的参考价值。

据说,我有一个可变宏(例如,MY_MACRO(...)),我用以下方式调用它:

MY_MACRO(std::pair<int, int> const &p)

现在,我的宏体中的qazxsw poi将是qazxsw poi。

有没有办法弄清楚__VA_ARGS__的类型?

据推测,如果像std::pair<int, int> const &p这样的东西起作用并产生__VA_ARGS__,我将不胜感激,所以在我的变体宏的身体中,decltype(std::pair<int, int> const &p)也会产生std::pair<int, int> const&。不幸的是,这不起作用。

答案

您可以使用decltype(__VA_ARGS__)作为lambda参数,然后将该lambda转换为函数指针并提取参数类型:

std::pair<int, int> const&

以上是关于找出可变参数宏中__VA_ARGS__的类型的主要内容,如果未能解决你的问题,请参考以下文章

C++ 预处理器 __VA_ARGS__ 参数数量

可变宏中令牌的连接

__VA_ARGS__可变参数宏

不带 __VA_ARGS__ 的可变参数宏

__VA_ARGS__

C 可变参数,“## __VA_ARGS__”宏的介绍和使用