非模板函数参数的C++特性
C++ traits for non-template function parameters?
在函数模板的定义中,模板参数的实例化通常是未知的。类型特征可以用于在编译时获得一些信息。例如,这里有一个is_pointer
:的琐碎应用
template <typename T>
void foo(T p) { cout << is_pointer<T>::value << endl; }
我的问题是:在非模板函数中,是否存在编译时函数等特性可以提供有用信息的情况?
是:
#include <iostream>
#include <limits>
int main()
{
std::cout << "Max value of an int on your platform is "
<< std::numeric_limits<int>::max() << "n";
}
这是我想到的第一个例子。我相信还有很多其他的。更一般地说,它允许在编译时对类型进行键控"查找"。显然,在非模板的情况下,宏定义(INT_MAX
等)也可以实现同样的效果
除非检查关于基本类型的编译时信息,比如整型的最大值和最小值或其他什么。
类型特征的真正好处是帮助模板元编程,或者通过添加带有sfinae的控制流,或者在使用不正确的类型时产生更好的错误。
相关文章:
- 当工件是库并且标志影响C或C++头时,特性标志/切换
- C++:编译对无关派生类、bug或特性的函数调用
- 设置窗口几何图形特性的正确方法
- 对于非常大的输入,缺少和重复 1..n 的数字数组.使用1..n系列特性的解决方案.溢出问题
- Movesense设备中的真实自定义Gatt服务和特性
- 如何:非根QML前端和根特性的工作人员线程
- 无向DFS:如何提供颜色图作为外部特性
- 我如何让GDB告诉我记忆特性一个给定的地址
- c++11新特性,正确使用shared_ptr
- 运行时特性测试、setjmp、longjmp和信号掩码
- Qt 和 Android 特性更改不发出
- wxWidgets 3.0-新特性和功能,添加和替换不推荐使用的特性和功能
- g++(4.7.2)错误或特性,在编译时初始化静态数组时
- 获取表面浅色特性
- 除了移动语义,还有哪些C++11特性可以提高代码的性能
- 请解释一个特性单例(C++)
- 统一容器特性
- 使用BOOST复制边及其顶点和特性
- Python 在 C/C++ 中的 yield 特性?
- 折叠表达式是C++14还是C++1z特性