blob: 03d37bdc61a4bfb792c959ba354cc78a3743a9cd [file] [log] [blame]
version (CppRuntime_Clang) version = CppMangle_Itanium;
version (CppRuntime_Gcc) version = CppMangle_Itanium;
version (CppRuntime_Sun) version = CppMangle_Itanium;
template ScopeClass(C)
if (is(C == class) && __traits(getLinkage, C) == "C++")
{
extern(C++, class)
extern(C++, __traits(getCppNamespaces,C))
extern(C++, (ns))
class ScopeClass { }
}
extern(C++) class Foo {}
extern(C++) void test(ScopeClass!Foo)
{
}
version(CppMangle_Itanium)
{
static assert (test.mangleof == "_Z4testP10ScopeClassIP3FooE");
}
else version (CppRuntime_Microsoft)
{
version (Win32)
{
static assert (test.mangleof == "?test@@YAXPAV?$ScopeClass@PAVFoo@@@@@Z");
}
version (Win64)
{
static assert (test.mangleof == "?test@@YAXPEAV?$ScopeClass@PEAVFoo@@@@@Z");
}
}
alias AliasSeq(T...) = T;
alias ns = AliasSeq!();
immutable ns2 = AliasSeq!();
extern(C++,(ns)) class Bar {}
extern(C++,) class Baz {}
extern(C++, (ns2)) class Quux {}