条件类型定义

pyt*_*hor 5 c++ templates types

我确信boost有一些功能可以做到这一点,但我不太了解相关的库.我有一个模板类,这是非常基本的,除了我需要定义条件类型的一个扭曲.这是我想要的伪代码

struct PlaceHolder {};
    template <typename T>
class C{
    typedef (T == PlaceHolder ? void : T) usefulType;
};
Run Code Online (Sandbox Code Playgroud)

如何编写有条件的那种类型?

raf*_*fak 9

还有新标准:

typedef typename std::conditional<std::is_same<T, PlaceHolder>::value, void, T>::type usefulType


sti*_*ijn 6

我认为这是你追求的原则:

template< class T >
struct DefineMyTpe
{
  typedef T usefulType;
};

template<>
struct DefineMyType< PlaceHolder >
{
  typedef void usefulType;
};

template< class T > 
class C
{
  typedef typename DefineMyType< T >::usefulType usefulType;
};
Run Code Online (Sandbox Code Playgroud)