blob: 0f235728bc8d16e36fd971a92de5513e030d7158 [file] [log] [blame]
// { dg-do compile }
// { dg-additional-options "-fisolate-erroneous-paths-attribute" }
class A;
struct B {
typedef A type;
};
template <typename> struct I : B {};
class C {
public:
C(char *);
int size();
};
template <typename> struct D;
template <typename _Tp, typename = D<_Tp>> class F {
class G {
template <typename> static _Tp *__test();
typedef int _Del;
public:
typedef decltype(__test<_Del>()) type;
};
public:
typename I<_Tp>::type operator*() {
typename G::type a = 0;
return *a;
}
};
class H {
F<A> Out;
H();
};
void fn1(void *, void *, int) __attribute__((__nonnull__));
class A {
int OutBufEnd, OutBufCur;
public:
void operator<<(C p1) {
int b, c = p1.size();
if (OutBufEnd)
fn1(&OutBufCur, &b, c);
}
};
char* a;
H::H() { *Out << a; }