IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    c++ traits(1)

    天下发表于 2016-10-14 06:18:00
    love 0
    #pragma once
    template 
    <typename T>  
    struct TraitsHelper;

    template 
    <typename T>  
    struct TraitsHelper {  
        
    static const bool isPointer = false;  
        
    enum {IsPointer = false};
        
    bool GetIsPointer()
        {
            
    return IsPointer;
        }
    };  
    template 
    <typename T>  
    struct TraitsHelper<T*> {  
        
    static const bool isPointer = true;  
        
    enum {IsPointer = true};
        
    bool GetIsPointer()
        {
            
    return IsPointer;
        }
    };  

    //call
    #include "stdafx.h"
    int _tmain(int argc, _TCHAR* argv[])
    {
        
    int val = 0;
        
    int* pVal = &val;
        TraitsHelper
    <int> a;
        TraitsHelper
    <int*> b;

        
    bool b1 = a.IsPointer;
        
    bool b2 = b.IsPointer;

        
    bool b3 = a.GetIsPointer();

        
    bool b4 = TraitsHelper<int>::IsPointer;
        
    bool b5 = TraitsHelper<int*>::IsPointer;


        
    return 0;
    }


    天下 2016-10-14 14:18 发表评论


沪ICP备19023445号-2号
友情链接