Why does this work?
Mason McGill via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jun 23 02:29:13 PDT 2014
On Monday, 23 June 2014 at 08:30:44 UTC, h_zet wrote:
> import std.typecons;
>
> auto foo2(R)(R foopara){
> return tuple(foopara, is(R==int));
> }
>
> void main(){
> auto tuple(a,b) = foo2(1);
> }
>
>
> I'm expecting some error such as can not act as left value but
> when I compiled this, no error occured. DMD version is DMD64
> v2.065.(ldc2 exited with error function declaration without
> return type)
>
> Why does this work? Or it is a bug?
Strange behavior, indeed. It took me a minute, but I think I know
what's going on, and I'm pretty sure it's a bug. D recently
introduced a short syntax for function-like templates:
enum a(b) = "some_value";
It looks like this also (sort of) works with other qualifiers,
which I believe it shouldn't. Here's a minimal example that might
be good to put in a bug report:
void main() {
enum a(x) = "some_value"; // Good.
auto b(x) = "some_value"; // Huh?
// This also works for `const`, `static`, etc.
}
More information about the Digitalmars-d-learn
mailing list