typeid работает некоректно (возможно)
#include <iostream>
#include <typeinfo>
template <typename T1, typename T2, typename T3>
auto min(T1 x, T2 y, T3 z) -> decltype (x < y && x < z ? x : y < z ? y : z)
{
return (x < y && x < z ? x : y < z ? y : z);
}
int main(void)
{
int a = 3;
double b = 777.4;
char c = 65;
std::cout << typeid(min(a, b, c)).name(); // Everytime shows double
return 0;
}
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
Ну тогда отвечу, что тип выражений в С++ никогда не зависит от значений, которые в них используются. В лучшем случае, можно использовать значение, известное на этапе компиляции, как часть типа, например ::std::conditional_t< ( 3 < 777.4 ), int, double >