[Issue 13167] New: Link errors with std.variant
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sun Jul 20 10:42:42 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=13167
Issue ID: 13167
Summary: Link errors with std.variant
Product: D
Version: D2
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: andrei at erdani.com
Consider (also http://dpaste.dzfl.pl/051bb1357bba):
import std.variant;
alias Payload = Algebraic!(
bool,
double,
string
);
struct Value
{
private Payload payload;
this(T)(T v) { payload = Payload(v); }
bool opEquals(T)(auto ref T v) { return payload == v; }
}
void main() {}
This code causes the following link errors:
Undefined symbols for architecture x86_64:
"_D3std7variant71__T8VariantNVmi16TnTbTdTAyaTAS3std7variant4ThisTHAyaS3std7variant4ThisZ8VariantN06__ctorMFNcNeS3bug5ValueZS3std7variant71__T8VariantNVmi16TnTbTdTAyaTAS3std7variant4ThisTHAyaS3std7variant4ThisZ8VariantN",
referenced from:
_D3bug5Value23__T6__ctorTS3bug5ValueZ6__ctorMFNcNfS3bug5ValueZS3bug5Value
in bug.o
"_D3std7variant71__T8VariantNVmi16TnTbTdTAyaTAS3std7variant4ThisTHAyaS3std7variant4ThisZ8VariantN08opEqualsMxFNbNeKS3bug5ValueZb",
referenced from:
_D3bug5Value25__T8opEqualsTS3bug5ValueZ8opEqualsMFNfKS3bug5ValueZb in
bug.o
After passing through ddemangle:
Undefined symbols for architecture x86_64:
"ref @trusted std.variant.VariantN!(16uL, bool, double,
immutable(char)[]).VariantN std.variant.VariantN!(16uL, bool, double,
immutable(char)[]).VariantN.__ctor(bug.Value)", referenced from:
ref @safe bug.Value bug.Value.__ctor!(bug.Value).__ctor(bug.Value) in
bug.o
"const(nothrow @trusted bool function(ref bug.Value))
std.variant.VariantN!(16uL, bool, double,
immutable(char)[]).VariantN.opEquals", referenced from:
@safe bool bug.Value.opEquals!(bug.Value).opEquals(ref bug.Value) in
bug.o
Commenting out the constructor makes the first undefined reference error go
away. Commenting out opEquals makes both errors go away.
--
More information about the Digitalmars-d-bugs
mailing list