This C++ code compiles:
#include <variant>
#include <string>
#include <map>
int main()
{
using Foo = std::variant<int, std::string>;
std::map<int, Foo> foos = {{0, "abc"}, {1, 5}};
}
This code doesn't:
```d
import std.variant;
void main()
{
alias Foo = Algebraic!(int, string);
Foo[int] foos = [
0: "abc",
1: 5
];
}
but this does:
import std.variant;
void main()
{
alias Foo = Algebraic!(int, string);
Foo[int] foos = [
0: Foo("abc"),
1: Foo(5)
];
}
Why does D need the explicit declarations whereas C++ can infer it?