On Friday, 11 October 2013 at 15:55:17 UTC, Artur Skawina wrote:
It's probably not just "incompetence" (the compiler is able to figure this out in other contexts), but a deliberate choice. Having function types
depend on their bodies would not be a good idea. Eg

    int c;
    auto f() {
       int a = 42;
       int f1() { return a; }
       int f2() { return 0; }
       return !c?&f1:&f2;
    }

Mark f2 as 'static' and this code will no longer compile. If that would be done automatically then you'd have to 'undo' it manually, which would cause even more problems (consider generic code, which isn't prepared
to handle this).

artur

[1] at least without other language improvements; enabling overloading on 'static', plus a few other enhancements, would change the picture.

Agreed.

However, I do feel uncomfortable with new habit to put `static` everywhere to avoid hidden compiler "help" :(

Reply via email to