template<typename T> struct A {};
A<int+> int x; A<int x;
template <bool> struct S {};
S<bool(2 > 1)> s;
namespace greatergreater {
template<typename T> struct S { S(); S(T); };
void f(S<int>=0); void f(S<S<int>>=S<int>()); template<typename T> void t();
struct R {
friend void operator==(void (*)(), R) {}
friend void operator>=(void (*)(), R) {}
};
void g() {
(void)(&t<int>==R()); (void)(&t<int>>=R()); (void)(&t<S<int>>>=R());
#if __cplusplus <= 199711L
#endif
(void)(&t<S<int>>==R()); }
}
namespace PR5925 {
template <typename x>
class foo { };
void bar(foo *X) { }
}
namespace PR13210 {
template <class T>
class C {};
void f() {
new C(); }
}
namespace pr16225add {
template<class T1, typename T2> struct Known { }; template<class T1, typename T2> struct X;
template<class T1, typename T2> struct ABC; template<int N1, int N2> struct ABC2 {};
template<class T1, typename T2> struct foo :
UnknownBase<T1,T2> { };
template<class T1, typename T2> struct foo2 :
UnknownBase<T1,T2>, Known<T1> { };
template<class T1, typename T2> struct foo3 :
UnknownBase<T1,T2,ABC<T2,T1> > { };
template<class T1, typename T2> struct foo4 :
UnknownBase<T1,ABC<T2> >, Known<T1> { };
template<class T1, typename T2> struct foo5 :
UnknownBase<T1,T2,ABC<T2,T1>> #if __cplusplus <= 199711L
#endif
{ };
template<class T1, typename T2> struct foo6 :
UnknownBase<T1,ABC<T2,T1>>, #if __cplusplus <= 199711L
#endif
Known<T1> { };
template<class T1, typename T2, int N> struct foo7 :
UnknownBase<T1,T2,(N>1)> { };
template<class T1, typename T2> struct foo8 :
UnknownBase<X<int,int>,X<int,int>> #if __cplusplus <= 199711L
#endif
{ };
template<class T1, typename T2> struct foo9 :
UnknownBase<Known<int,int>,X<int,int>> #if __cplusplus <= 199711L
#endif
{ };
template<class T1, typename T2> struct foo10 :
UnknownBase<Known<int,int>,X<int,X<int,int>>> #if __cplusplus <= 199711L
#endif
{ };
template<int N1, int N2> struct foo11 :
UnknownBase<2<N1,N2<4> { };
}
namespace PR18793 {
template<typename T, T> struct S {};
template<typename T> int g(S<T, (T())> *);
}
namespace r360308_regression {
template<typename> struct S1 { static int const n = 0; };
template<int, typename> struct S2 { typedef int t; };
template<typename T> struct S3 { typename S2<S1<T>::n < 0, int>::t n; };
template<typename FT> bool f(FT p) {
const bool a = p.first<FT(0), b = p.second>FT(0);
return a == b;
}
}