template ctor overload Segmentation fault
vit
vit at vit.vit
Sun Dec 12 19:17:53 UTC 2021
On Sunday, 12 December 2021 at 18:32:28 UTC, Imperatorn wrote:
> On Sunday, 12 December 2021 at 11:57:43 UTC, vit wrote:
>> Hello, why does this code fail to compile?
>>
>> ```d
>> struct Foo(T){
>> this(Rhs, this This)(scope Rhs rhs){
>> }
>>
>> this(ref scope typeof(this) rhs){
>> }
>> }
>>
>>
>> struct Bar{
>> Foo!int foo;
>> }
>>
>> void main(){
>> }
>> ```
>>
>> error: Segmentation fault (core dumped)
>
> What are you trying to accomplish?
Something like this:
```d
import std.traits : CopyConstness;
struct UniquePtr(T){
alias Type = T;
this(Rhs, this This)(scope Rhs rhs)
if(is(CopyConstness!(Rhs, Rhs.Type*) : CopyConstness!(This,
This.Type*))){
//...
}
//one of copy ctors:
this(ref scope typeof(this) rhs){
//...
}
static UniquePtr make(Args...)(Args args){
return UniquePtr.init;
}
}
void main(){
const UniquePtr!(int) cui = UniquePtr!(const int).make(1);
const UniquePtr!(const int) cuci = UniquePtr!(const
int).make(1);
UniquePtr!(const int) uci = UniquePtr!(int).make(1);
UniquePtr!(int) ui = UniquePtr!(int).make(1);
const UniquePtr!(int) xcui = UniquePtr!(immutable
int).make(1);
const UniquePtr!(const int) xcuci = UniquePtr!(immutable
int).make(1);
}
```
This work but UniquePtr canno't be inside struct because
Segmentation fault.
More information about the Digitalmars-d-learn
mailing list