C++: C++ type traits technique
Posted benxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++: C++ type traits technique相关的知识,希望对你有一定的参考价值。
C++ Traits是什么?
Think of a trait as a small object whose main purpose is to carry information used by another object or algorithm to determine "policy" or "implementation details". - Bjarne Stroustrup
Trait 将类型的性质、特性封装起来,可用于判断类型的特性:
- 这个类型是否为 pointer ?
- 这个类型是否为 reference ?
- 这个类型是否具体某个特性?
在实现通用的算法或业务逻辑时,可以根据数据类型的特性,选择不同的实现细节
实例1:is_pointer
template <typename T> struct is_pointer static const bool value = false; ; template <typename T> struct is_pointer<T*> static const bool value = true; ; template<typename T> void algorithm(T& object) std::cout << "is_pointer:" << is_pointer<T>::value << std::endl; int main() int a = 100; algorithm(a); int *b = &a; algorithm(b); return 0;
参考资料
An introduction to C++ Traits
https://accu.org/index.php/journals/442
C++ Reference: type_traits
http://www.cplusplus.com/reference/type_traits/
以上是关于C++: C++ type traits technique的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 VS2019 构建最初的 VS2013 C++ 项目时 xtr1common 和 type_traits 中的错误