#pragma once template struct TIsPointer { enum { Value = false }; }; template struct TIsPointer { enum { Value = true }; }; template struct TIsPointer { enum { Value = TIsPointer::Value }; }; template struct TIsPointer< volatile T> { enum { Value = TIsPointer::Value }; }; template struct TIsPointer { enum { Value = TIsPointer::Value }; };