相关疑难解决方法(0)

检查成员是否存在,可能在基类C++ 11版本中

/sf/answers/137702841/中,提供了一种解决方案,用于静态检查成员是否存在,可能在类型的子类中:

template <typename Type> 
class has_resize_method
{ 
   class yes { char m;}; 
   class no { yes m[2];}; 
   struct BaseMixin 
   { 
     void resize(int){} 
   }; 
   struct Base : public Type, public BaseMixin {}; 
   template <typename T, T t>  class Helper{}; 
   template <typename U> 
   static no deduce(U*, Helper<void (BaseMixin::*)(), &U::foo>* = 0); 
   static yes deduce(...); 
public: 
   static const bool result = sizeof(yes) == sizeof(deduce((Base*)(0))); 
};
Run Code Online (Sandbox Code Playgroud)

但是,它不适用于C++ 11 final类,因为它继承了被测试的类,这会final阻止它.

OTOH,这一个:

template <typename C>
struct has_reserve_method {
private:
    struct No …
Run Code Online (Sandbox Code Playgroud)

c++ final type-traits template-meta-programming c++11

29
推荐指数
2
解决办法
9104
查看次数