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.

Reply via email to