Тип вывода макроса c ++, основанный на аргументе функции макроса

Я пытаюсь определить тип моей переменной на основе логической переменной, входящей в мою макрофункцию, но я получаю ошибку компилятора.

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

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

0

Решение

Вам нужно будет использовать std::conditional.

Поскольку тип должен быть определен во время компиляции, логическое значение также должно быть константным выражением:

#include <type_traits>

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]