c++ traits(1)
#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;
}
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;
}
posted on 2016-10-14 14:18 天下 閱讀(465) 評論(0) 編輯 收藏 引用 所屬分類: C/C++ 、C++模板