前置依赖:

  1. integral_constant
  2. conditional

源码解读:

template<typename...>
    struct __and_;

template<>
    struct __and_<>
    : public true_type
    { };

template<typename _B1>
    struct __and_<_B1>
    : public _B1
    { };

template<typename _B1, typename _B2>
    struct __and_<_B1, _B2>
    : public conditional<_B1::value, _B2, _B1>::type
    { };

template<typename _B1, typename _B2, typename _B3, typename... _Bn>
    struct __and_<_B1, _B2, _B3, _Bn...>
    : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type
    { };