[Issue 18831] New: Weird interaction between std.variant, std.algorithm.iteration.map, and alias this
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun May 6 04:20:42 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18831
Issue ID: 18831
Summary: Weird interaction between std.variant,
std.algorithm.iteration.map, and alias this
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: normal
Priority: P1
Component: phobos
Assignee: nobody at puremagic.com
Reporter: dhasenan at gmail.com
---
import std.variant, std.range, std.algorithm;
struct Bar
{
int i;
}
struct Foo
{
auto i()
{
return iota(12)
.map!(x => Bar(x));
}
alias i this;
}
void main()
{
Foo controlGroup = Foo();
Algebraic!(Foo) treatmentGroup = Foo();
}
---
The control group works without errors. The treatment group fails with:
/home/dhasenan/.local/bin/../include/phobos/std/meta.d(799): Error: template
instance `F!(__lambda1)` cannot use local __lambda1 as parameter to non-global
template replaceTemplateArgs(T...)
/home/dhasenan/.local/bin/../include/phobos/std/meta.d(805): Error: template
instance `algebraicaliasthis.Foo.i.staticMap!(replaceTemplateArgs, __lambda1)`
error instantiating
/home/dhasenan/.local/bin/../include/phobos/std/typecons.d(7788):
instantiated from here: staticMap!(replaceTemplateArgs, __lambda1, Result)
/home/dhasenan/.local/bin/../include/phobos/std/variant.d(103):
instantiated from here: ReplaceType!(This, VariantN!(1LU, Foo), Foo)
/home/dhasenan/.local/bin/../include/phobos/std/variant.d(137):
instantiated from here: This2Variant!(VariantN!(1LU, Foo), Foo)
/home/dhasenan/.local/bin/../include/phobos/std/variant.d(1500):
instantiated from here: VariantN!(1LU, Foo)
algebraicaliasthis.d(20): instantiated from here: Algebraic!(Foo)
--
More information about the Digitalmars-d-bugs
mailing list