http://d.puremagic.com/issues/show_bug.cgi?id=7897
Summary: Problem with alias template parameter Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: turkey...@gmail.com --- Comment #0 from Manu <turkey...@gmail.com> 2012-04-13 06:35:59 PDT --- I've boiled this down as much as I can. My use case isn't clearly reflected here (significantly more complex). import std.traits; struct ExternFunction { string name; void* pFunction; } // loose function extern(C) void function() globalFunction; // functions contained in a struct struct Debug { extern(C) void function( const char* format, ... ) outputDebug; } __gshared Debug d; void main() { const(ExternFunction)* pImports = null; // register loose function is okay HookupEngineFunction!( globalFunction )( pImports ); // register function in struct (doesn't work, won't take alias for some reason?) HookupEngineFunction!( d.outputDebug )( pImports ); // register whole struct (fails via internal call to the function above, but with a different complaint) HookupEngineModule!( d )( pImports ); } private: // hook up a struct full of callback pointers void HookupEngineModule( alias s )( const(ExternFunction)* pImports ) { // iterate struct members foreach( m; __traits( allMembers, typeof( s ) ) ) { // !!! getMember doesn't work here... HookupEngineFunction!( __traits( getMember, s, m ) )( pImports ); } } void HookupEngineFunction( alias funcptr )( const(ExternFunction)* pImports ) { alias typeof( funcptr ) Type; static if( isFunctionPointer!Type ) { const(ExternFunction)* pExtern = pImports; // FindImport(...); funcptr = cast(Type)pExtern.pFunction; } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------