https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79702

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
typedef __SIZE_TYPE__ size_t;
template<typename...> using __void_t = void;


template<typename _Tp, _Tp __v>
struct integral_constant
{
  static constexpr _Tp value = __v;
  typedef _Tp value_type;
  typedef integral_constant<_Tp, __v> type;
  constexpr operator value_type() const { return value; }
  constexpr value_type operator()() const { return value; }
};

  template<typename _Tp>
    struct tuple_size;

  template<typename _Tp, typename = void>
    struct __tuple_size_cv_impl { };

  template<typename _Tp>
    struct __tuple_size_cv_impl<_Tp,
__void_t<decltype(tuple_size<_Tp>::value)>>
    : integral_constant<size_t, tuple_size<_Tp>::value> { };


  template<typename _Tp>
    struct tuple_size<const _Tp> : __tuple_size_cv_impl<_Tp> { };


struct S
{
  int x1 : 2;
  volatile double y1;
};

S f3()
{
  return {};
}

const auto [ x3, y3 ] = f3();

Reply via email to