view clang/test/Modules/Inputs/merge-using-decls/a.h @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 5f17cb93ff66
children
line wrap: on
line source

struct X {
  int v;
  typedef int t;
  void f(X);
};

struct YA {
  int value;
  typedef int type;
};

struct Z {
  void f(Z);
};

template<typename T> struct C : X, T {
  using T::value;
  using typename T::type;
  using X::v;
  using typename X::t;
};

template<typename T> struct D : X, T {
  using T::value;
  using typename T::type;
  using X::v;
  using typename X::t;
};

template<typename T> struct E : X, T {
  using T::value;
  using typename T::type;
  using X::v;
  using typename X::t;
};

template<typename T> struct F : X, T {
  using T::value;
  using typename T::type;
  using X::v;
  using typename X::t;
};

// Force instantiation.
typedef C<YA>::type I;
typedef D<YA>::type I;
typedef E<YA>::type I;
typedef F<YA>::type I;

#if __cplusplus >= 201702L
template<typename ...T> struct G : T... {
  using T::f...;
};
using Q = decltype(G<X, Z>());
#endif