【发布时间】:2019-03-09 05:50:34
【问题描述】:
假设我有一个可变参数宏(例如,MY_MACRO(...)),我将其称为以下方式:
MY_MACRO(std::pair<int, int> const &p)
现在,我的宏正文中的__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__) 也会产生std::pair<int, int> const&。不幸的是,这不起作用。
【问题讨论】:
-
预处理器宏是 C++ 的东西,就像从 C 继承和/或采用的所有其他东西一样。
-
@Deduplicator 埋头苦干。
-
宏参数是任意字符串,不需要解析。所以说论据的类型是没有意义的。
-
@ShafikYaghmour:这是一个包含两个参数的列表,但可以使用
__VA_ARGS__
标签: c++ macros c-preprocessor variadic-macros