Я пытаюсь определить тип моей переменной на основе логической переменной, входящей в мою макрофункцию, но я получаю ошибку компилятора.
#define myImageType(depthImage) ((depthImage)==0 ? int : double)
int main()
{
bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}
Вам нужно будет использовать std::conditional
.
Поскольку тип должен быть определен во время компиляции, логическое значение также должно быть константным выражением:
#include <type_traits>
#define myImageType(depthImage) \
std::conditional<depthImage, int, double>::type
int main() {
constexpr bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}
Других решений пока нет …