Voldemort type for mixin template.
ChangLong
changlon at gmail.com
Fri Jan 12 07:28:14 UTC 2018
On Thursday, 11 January 2018 at 21:30:43 UTC, aliak wrote:
> On Thursday, 11 January 2018 at 08:56:11 UTC, ChangLong wrote:
>> When I try add some sub type for struct with mixin template,
>> seems there is no way to hidden the private type.
>>
>> Is there a way to hidden type from mix template like Voldemort
>> type ?
>>
>> fake code:
>>
>> mix template TypeX () {
>> alias This = typeof(this);
>>
>> static struct Unique {
>> This* _ptr ;
>> }
>> static struct Helper {
>> private Unique data;
>> }
>> alias TypeX = {
>> alias PublicName = Helper ;
>> }
>> }
>>
>> struct Node {
>> mixin TypeX!();
>> PublicName helper;
>> }
>
> Hi, can you explain a bit more? The question is not entirely
> clear to me. Can you mixin a struct of type PublicName and just
> hide everything in there?
>
> mixin template TypeX() {
> struct PublicName {
> private alias This = typeof(this);
> private struct Unique {
> This* _ptr;
> }
> private Unique _data;
> alias _data this;
> }
> }
>
> void main(string[] args) {
> mixin TypeX;
> PublicName helper;
> helper._ptr.writeln;
> }
>
> Cheers
If PublicName is complex type, require has some private type
information. there is noway to hidden the private type from the
scope of mixin. the purpose is hidden helper._ptr from main
function to avoid name conflict.
I try use mixin fo modify struct to allow it has some kind zero
cost abstract, or memory manage function. since the system is
complex it will import a lot symbol into the class.
I has to put the mix template into struct, since I has to add
member with type from mix template. and I also want to avoid
access ref_count from the struct body(and a lot other name
conflict)
More information about the Digitalmars-d-learn
mailing list