On Saturday, 23 August 2014 at 16:49:23 UTC, Sönke Ludwig wrote:
Am 22.08.2014 21:00, schrieb "Marc Schütz" <[email protected]>":
On Friday, 22 August 2014 at 18:08:34 UTC, Sönke Ludwig wrote:
Am 22.08.2014 19:57, schrieb "Marc Schütz"
<[email protected]>":
The easiest and cleanest way would be to add a function in
std.data.json:
auto parse(Target, Source)(Source input)
if(is(Target == JSONValue))
{
return ...;
}
The various overloads of `std.conv.parse` already have
mutually
exclusive template constraints, they will not collide with
our function.
Okay, for parse that may work, but what about to!()?
What's the problem with to!()?
to!() definitely doesn't have a template constraint that
excludes JSONValue. Instead, it will convert any struct type
that doesn't define toString() to a D-like representation.
For converting a JSONValue to a different type, JSONValue can
implement `opCast`, which is the regular interface that
std.conv.to uses if it's available.
For converting something _to_ a JSONValue, std.conv.to will
simply create an instance of it by calling the constructor.