检查类是否具有公共typedef

时间:2018-10-14 13:06:04

标签: c++ typedef typetraits

我有一些类定义了自己的共享指针ClassName::Ptr,就像这样:

class ClassWithPointer {
public:
  typedef std::shared_ptr<ClassWithPointer> Ptr;
public:
  ClassWithPointer() {}
  ~ClassWithPointer() {}
};

我想创建一个模板类,使用定义了Ptr的这些类,就像这样:

template <typename T>
class TemplateThatUsesPtr {
public:
  void addPointer(T::Ptr pointer) { m_pointers.push_back(pointer);}
private:
  std::vector<T::Ptr> m_pointers;
};

创建模板的实现时,如何检查模板参数是否具有Ptr typedef?如果不是这样,我怎么能用#pragma error打印一个友好的错误消息,而不是出现模板问题时出现所有错误?

我实际上使用的是Visual Studio,但可以使用常规解决方案。

0 个答案:

没有答案