On Thursday, 11 July 2013 at 12:03:10 UTC, Jakob Ovrum wrote:
However, in my opinion, it's a bug that you're allowed to
declare a function template (when using the shortcut syntax)
without defining it, whether in an interface or not. This is a
rather natural bug though, due to the nature of function
templates:
void a()();
is equivalent of:
template a() { void a(); }
Perhaps it makes sense to allow the declaration without
definition when the template and function are explicitly
separated (can anyone think of a case where this is useful?
Maybe mixin-related?), but when using the former syntax - the
function template syntax - I don't think it makes any sense.
It is possible in current implementation to split template
declaration and definition in different modules but in such case
list of potential template arguments is limited. Disabling this
option in general would disable D ability to hide template
implementation (like libraries and external functions). But in
this particular case I agree that this should be an error like in
situation with static functions.