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.
  }

Reply via email to