c ++宏输出类型基于宏函数参数

时间:2016-11-20 20:11:38

标签: c++ macros variable-types

我试图根据布尔变量定义我的变量类型进入我的宏函数,但是我得到编译器错误。

#define myImageType(depthImage) ((depthImage)==0 ? int : double)

int main()
{
bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}

1 个答案:

答案 0 :(得分:2)

您需要使用std::conditional

由于必须在编译时决定类型,因此布尔值也必须是常量表达式:

#include <type_traits>

#define myImageType(depthImage) \
std::conditional<depthImage, int, double>::type

int main() {
    constexpr bool inMilimeter = true;
    myImageType(inMilimeter) pixelIntensity;
}