blob: b481348976a79e832a8163ec0edf40d95ae84d6a [file] [log] [blame]
struct Test32NS1
{
template<class X>
struct Foo
{
X *v;
};
template<class X>
struct Bar
{
X *v;
};
};
struct Test32NS2
{
template<class X>
struct Foo
{
X *v;
};
};
template <template <class X> class Y, template <class X> class Z>
struct Test32
{
Y<int>* field;
};
void test32a(Test32<Test32NS1::Foo, Test32NS1::Foo> arg)
{
}
void test32b(Test32<Test32NS1::Foo, Test32NS1::Bar> arg)
{
}
void test32c(Test32<Test32NS1::Foo, Test32NS2::Foo> arg)
{
}
void test32d(Test32<Test32NS1::Foo, Test32NS2::Foo> arg1, Test32<Test32NS2::Foo, Test32NS1::Foo> arg2)
{
}
class XXX
{
};
template <void (&Goo)(XXX*, XXX**), void (&Xoo)(XXX*, XXX**)>
struct Test33
{
};
void test33a(XXX*, XXX**){}
void test33(XXX*, Test33<test33a, test33a> arg, XXX*)
{
}
template <void (&Goo)(int)>
struct Test34
{
};
struct Test34A
{
static void foo(int);
};
void Test34A::foo(int) {}
void test34(Test34<Test34A::foo> arg)
{
}
int test36= 36;
template <int& XREF>
struct Test37
{
};
struct Test37A
{
static int t38;
};
int Test37A::t38 = 42;
void test37(Test37<test36> arg)
{
}
void test38(Test37<Test37A::t38> arg)
{
}
struct Test39
{
template <class X>
struct T39A
{
};
};
struct T39A
{
};
void test39(Test39::T39A< ::T39A >)
{
}
#if 0 //only for g++ with -std=c++0x and Visual C++ >= 2013
#if defined(__GNUG__) || (defined(_MSC_VER) && _MSC_VER >= 1200)
template<class... VarArg> struct Test40
{
};
void test40(Test40<int, double, void> arg)
{
}
#endif
#endif
extern XXX const * const test41 = 0;
namespace Test42
{
extern XXX const * const test42 = 0;
}
int test43[4] = {1, 2, 3, 4};
XXX const* const test44()
{
return new XXX;
}