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的主要内容,如果未能解决你的问题,请参考以下文章

C++范型编程 -- <type_traits>头文件

尝试使用 VS2019 构建最初的 VS2013 C++ 项目时 xtr1common 和 type_traits 中的错误

c++ 迭代器问题

第17课 类型萃取_基本的type_traits

c++ char_traits模板类的实现!!!

C++ template —— trait与policy类