我试图理解以下代码。派生是从T派生的结构,“,”是什么意思,然后是Fallback {}

template <class T>
struct has_FlowTraits<T, true>
{
  struct Fallback { bool flow; };
  struct Derived : T, Fallback { };   //What does it means ?

  template<typename C>
  static char (&f(SameType<bool Fallback::*, &C::flow>*))[1];

  template<typename C>
  static char (&f(...))[2];

public:
  static bool const value = sizeof(f<Derived>(0)) == 2;
};

最佳答案

这是Member Detector Idiom的实现。它使用SFINAE检查类型T是否具有名为flow的成员。

编辑:您要问的逗号部分是multiple inheritance。 “派生结构”(公开)是从继承 T和Fallback。

10-05 23:47