blob: 508372bf5e7955e31cf9c74794dde8302bbcb13c [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-w -O2 -fno-exceptions -std=c++11 -fpermissive" } */
namespace a {
template <typename b, b c> struct d { static constexpr b e = c; };
template <typename> struct f : d<bool, __is_trivially_copyable(int)> {};
}
typedef long g;
template <typename> struct h { static const bool e = a::f<int>::e; };
namespace a {
template <typename> struct ah;
template <typename> class ai;
}
class i {
public:
operator[](long) const {}
};
template <typename, int> class am : public i {};
class an;
class k : public am<a::ai<an>, h<a::ai<a::ah<an>>>::e> {};
class l {
public:
aq();
};
class ar extern as;
typedef k at;
class m {
virtual bool av(int, unsigned &, at &, int &, g &, bool);
};
class ar {
public:
typedef m *aw(const &, int &, const &, const &);
};
struct ax {
static ay(ar::aw);
};
template <class az> struct n {
n(ar) { ax::ay(ba); }
static m *ba(const &bb, int &bc, const &bd, const &be) { az(bb, bc, bd, be); }
};
namespace {
class G : m {
unsigned bi(const at &, l &);
bool av(int, unsigned &, at &, int &, g &, bool);
public:
G(const, int, const, const) {}
};
}
bool G::av(int, unsigned &, at &bl, int &, g &, bool) {
l bo;
bi(bl, bo);
}
o() { n<G> bp(as); }
namespace {
enum { bq, br };
}
unsigned G::bi(const at &bl, l &bo) {
unsigned bs;
for (char *j;; j += 2)
switch (*j) {
case bq:
bl[bs];
case br:
bo.aq();
}
}