diff --git a/source/dyaml/stdsumtype.d b/source/dyaml/stdsumtype.d index 6178b2d..829bdd7 100644 --- a/source/dyaml/stdsumtype.d +++ b/source/dyaml/stdsumtype.d @@ -237,7 +237,7 @@ import std.meta : NoDuplicates; import std.meta : anySatisfy, allSatisfy; import std.traits : hasElaborateCopyConstructor, hasElaborateDestructor; -import std.traits : isAssignable, isCopyable, isStaticArray, isRvalueAssignable; +import std.traits : isAssignable, isCopyable, isStaticArray; import std.traits : ConstOf, ImmutableOf, InoutOf, TemplateArgsOf; // FIXME: std.sumtype : `std.traits : DeducedParameterType` and `std.conv : toCtString` @@ -251,6 +251,12 @@ alias DeducedParameterType = T; } +/// Compatibility with < v2.095.0 +private struct __InoutWorkaroundStruct{} +private @property T rvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); +private @property ref T lvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); +private enum isRvalueAssignable(Lhs, Rhs = Lhs) = __traits(compiles, { lvalueOf!Lhs = rvalueOf!Rhs; }); + import std.typecons : ReplaceTypeUnless; import std.typecons : Flag; //import std.conv : toCtString;