On 11/29/2015 12:13 PM, Ola Fosheim Grøstad wrote:
On a related note, does D support inline namespaces? Apparently it
affects mangling:
http://stackoverflow.com/questions/29764869/can-inline-namespaces-be-used-to-keep-backwards-compatibility-in-a-shared-librar
Namespaces affect mangling. The inline keyword doesn't.
I use inline namespaces quite a bit and am curious of how D resolves those.
string inlineNamespace(alias ns)(){
string s;
foreach(m;__traits(allMembers,ns))
s~=`alias `~m~`=`~__traits(identifier,ns)~`.`~m~`;`;
return s;
}
extern(C++,std){
extern(C++,version1){
void bar(){}
}
mixin(inlineNamespace!version1);
extern(C++,version2){
void bar(){}
}
}