我正试图沿着这些方向做点什么:
int var = 5;
std::numeric_limits<typeid(var)>::max();
但令人惊讶的是,它不起作用。我该如何解决这个问题? 感谢。
答案 0 :(得分:11)
您可以使用以下类型:
int the_max = std::numeric_limits<int>::max()
您可以使用辅助功能模板:
template <typename T>
T type_max(T)
{
return std::numeric_limits<T>::max();
}
// use:
int x = 0;
int the_max = type_max(x);
在C ++ 0x中,您可以使用decltype
:
int x = 0;
int the_max = std::numeric_limits<decltype(x)>::max();
答案 1 :(得分:4)
typeid
不返回类型,而是返回运行时type_info
对象。该模板参数需要编译时类型,因此不起作用。
在像gcc这样的编译器中,您可以使用
std::numeric_limits<typeof(var)>::max();
否则,您可以尝试Boost.Typeof。
在C ++ 0x中,您可以使用
std::numeric_limits<decltype(var)>::max();
(BTW,@James's type_max
如果你不需要明确的类型会好得多。)