Thread overview
Cannot Instantiate SumType
Sep 20, 2021
surlymoor
Sep 20, 2021
Paul Backus
Sep 20, 2021
surlymoor
September 20, 2021

I'm experiencing an error when instantiating SumType with an aggregate template that itself is instantiated with a void function. In other words...

struct Foo(alias f) {}
// As the error implies, altering it to be non-void makes everything copacetic~
void bar() {}
alias S = SumType!(Foo!bar);

The error in question...

Error: variable `std.typecons.ReplaceTypeUnless!(isSumTypeInstance, This, SumType!(Foo!(bar)), Foo!(bar)).F!(bar).replaceTemplateArgs` type `void` is inferred from initializer `bar()`, and variables cannot be of type `void`

Perhaps I'm dong something stupid, or failing to realize, because all the glue sniffing I did when I was younger has finally manifested itself, but if it's not, is there a workaround?

September 20, 2021

On Monday, 20 September 2021 at 11:21:28 UTC, surlymoor wrote:

>

The error in question...

Error: variable `std.typecons.ReplaceTypeUnless!(isSumTypeInstance, This, SumType!(Foo!(bar)), Foo!(bar)).F!(bar).replaceTemplateArgs` type `void` is inferred from initializer `bar()`, and variables cannot be of type `void`

Looks like this is a bug in ReplaceType:

import std.typecons;

struct Foo(alias f) {}
void bar() {}
alias _ = ReplaceType!(int, int, Foo!bar);

I've submitted a bug report here: https://issues.dlang.org/show_bug.cgi?id=22325

September 20, 2021

On Monday, 20 September 2021 at 15:33:23 UTC, Paul Backus wrote:

>

On Monday, 20 September 2021 at 11:21:28 UTC, surlymoor wrote:

>

The error in question...

Error: variable `std.typecons.ReplaceTypeUnless!(isSumTypeInstance, This, SumType!(Foo!(bar)), Foo!(bar)).F!(bar).replaceTemplateArgs` type `void` is inferred from initializer `bar()`, and variables cannot be of type `void`

Looks like this is a bug in ReplaceType:

import std.typecons;

struct Foo(alias f) {}
void bar() {}
alias _ = ReplaceType!(int, int, Foo!bar);

I've submitted a bug report here: https://issues.dlang.org/show_bug.cgi?id=22325

Thanks, Paul. Glad to see the fix is simple.