Different visibility in template for class and struct?

Shigeki Karita shigekikarita at gmail.com
Mon May 11 15:40:08 UTC 2020


On Monday, 11 May 2020 at 15:29:53 UTC, Steven Schveighoffer 
wrote:
> On 5/11/20 11:11 AM, Shigeki Karita wrote:
>> [...]
>
> First, it actually does compile, I think because the compiler 
> recognizes that LocalS is POD (plain old data), without 
> methods, so it doesn't need a context pointer.
>
> e.g.:
>
> auto make(T)() { return new T(); }
>
> ...
>
> auto x = make!LocalS; // ok
>
> If you add a method to LocalS, then make!LocalS fails to 
> compile. However, strangely, p!LocalS still returns true, I 
> think that is an error.
>
> -Steve

Thanks for your answer. Now I understand that POD matters here.

When I add a dtor: `struct LocalS { ~this() {} }`, the `p!LocalS` 
got false.


More information about the Digitalmars-d-learn mailing list