Test case: --------------------------------------------------- static assert(is(int == typeof(0))); void p()(int a) { pragma(msg, "OK(p)"); } void p()() { pragma(msg, "Err(p)"); } void r(R=typeof(0))(R a) { pragma(msg, "OK(r)"); } void r()() { pragma(msg, "Err(r)"); } void s()(typeof(0) a) { pragma(msg, "OK(s)"); } void t(typeof(0) a) { } void t() { } void q()(typeof(0) a) { pragma(msg, "OK(q)"); } void q()() { pragma(msg, "Err(q)"); } void main() { p!()(5); // without typeof() is ok r!()(5); // put that typeof() elsewhere is ok s!()(5); // no overloading is ok t(5); // no template is ok q!()(5); // Error } --------------------------------------------------- OK(p) OK(r) OK(s) x.d(22): Error: template x.q() does not match any function template declaration x.d(22): Error: template x.q() cannot deduce template function from argument types !()(int) x.d(22): Error: template instance errors instantiating template --------------------------------------------------- Probably the same as issue 4413, except it affects more than typeof(this).
Compiles with 2.059 Win32. PS E:\DigitalMars\dmd2\samples> dmd bug.d OK(p) OK(r) OK(s) OK(q) PS E:\DigitalMars\dmd2\samples>
*** This issue has been marked as a duplicate of issue 4413 ***
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル