Can't pass private symbols as alias parameter

Meta via Digitalmars-d digitalmars-d at puremagic.com
Sun Nov 16 19:22:48 PST 2014


On Sunday, 16 November 2014 at 10:41:20 UTC, deadalnix wrote:
> module a;
>
> struct A(alias foo) {
>     auto foo() {
>         return foo();
>     }
> }
>
> module b;
>
> import a;
>
> void main() {
>     auto a = A!bar();
> }
>
> private int bar() { return 42; }
>
> This do not work. I think it is a bug but I see how could see 
> it as a feature. Which one is it ?

It seems like a feature to me. Otherwise, you would have A.foo, 
which is in module a, calling a private function from module b. I 
think it is sane that the function should be public if you want 
to do things such as this. Furthermore, it will stop you from 
accidentally passing private symbols to alias template arguments 
when you don't mean to.


More information about the Digitalmars-d mailing list