C++ 在编译时获取对象类型,例如 numeric_limits<typeof<a>>::max()?

标签 c++ types typeof

给定int a; ,我知道以下返回最大值 a能把持住。

numeric_limits<int>::max()

但是,我想在不知道 a 的情况下获得相同的信息是一个 int .我想做这样的事情:

numeric_limits<typeof<a>>::max()
不是用这个确切的语法,但这甚至可以使用 ISO C++ 吗?


谢谢大家。 Aurélien Vallée 的 type_of()最接近,但我不想在我们的代码库中添加任何额外的东西。由于我们已经使用了 Boost,Éric Malenfant 对 Boost.Typeof 的引用让我使用了

numeric_limits<BOOST_TYPEOF(m_focusspeed)>::max()

我以前从未使用过它。再次感谢您提供如此多的消息灵通的回复。

最佳答案

template<typename T>
T get_lim( const T & x)
{
 return numeric_limits<T>::max();
}

好处是您可以在不显式指定 T 的情况下使用它:

size_t l = get_lim(34);

关于C++ 在编译时获取对象类型,例如 numeric_limits<typeof<a>>::max()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579232/

相关文章:

C:如何为我的类型化结构赋值?

c - 超出边界条件

Javascript 复杂的 "typeof"表达式

javascript - 这个函数有什么问题吗?不返回我指定的内容

c++ - 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?

c++ - 我可以在输入迭代器上定义开始和结束吗?

c++ - 将 Platform::Array<byte> 转换为字符串

c++ - 如何仅使用标准库编写 XML 解析器?

haskell - 无法将预期类型 (Int -> Int -> Int) 与实际类型 `(t0, t1, t2)' 匹配

C#.NET - 如何让 typeof() 与继承一起工作?