alias Bar Bar2; // but the second one doesn't alias Foo!(1) Bar; // 1 alias "level" works //alias Bar Bar2; // putting it behind the 1st alias makes it work template Foo(uint ver) { } ddraw.d(1): Error: forward reference to 'Foo!(1)'
Oh and moving the alias declaration doesn't help in the real-world example: interface IDirectDrawSurfaceB(uint ver) : IUnknown { ... HRESULT Initialize(LPDIRECTDRAW, LPDDSURFACEDESC ); // line 153 ... } alias IDirectDrawSurfaceB!(1) IDirectDrawSurface; // line 199 interface IDirectDrawB(uint ver) : IUnknown { ... HRESULT CreateSurface(LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *); ... } alias IDirectDrawB!(1) IDirectDraw; /// alias IDirectDraw *LPDIRECTDRAW; alias IDirectDrawSurface *LPDIRECTDRAWSURFACE; ddraw.d(153): Error: forward reference to 'IDirectDrawB!(1)' ddraw.d(153): Error: IDirectDraw is used as a type ddraw.d(199): Error: alias ddraw.IDirectDrawSurface recursive alias declaration ddraw.d(199): Error: template instance ddraw.IDirectDrawSurfaceB!(1) error instantiating
I tried using direct aliases also for the pointers to see if this solves the problem: alias IDirectDrawB!(1) *LPDIRECTDRAW; but it still doesn't work.
Fixed with 4503
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル