I've never used D before. I got the same errors with DMD.
$ ldc2 dhcptest.d
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5600): Error: template std.format.unformatValueImpl cannot deduce function from argument types !(RelayAge
ntInformationSuboption)(string, const(FormatSpec!char)), candidates are:
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5710): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = RelayAgentInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
is(Unqual!T == bool)
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5724): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = RelayAgentInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
is(T == typeof(null))
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5735): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = RelayAgentInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
!is(T == enum)
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5771): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = RelayAgentInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
isFloatingPoint!T
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5797): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = RelayAgentInformationSuboption,
Range = string,
Char = char must satisfy the following constraint:
isSomeChar!T
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5600): ... (3 more, -v to show) ...
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(713): Error: template instance std.format.unformatValue!(RelayAgentInformationSuboption, string, char) er
ror instantiating
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(656): instantiated from here: formattedRead!(string, char, RelayAgentInformationSuboption*)
dhcptest.d(431): instantiated from here: formattedRead!("%s", string, RelayAgentInformationSuboption*)
dhcptest.d(506): instantiated from here: VLList!(RelayAgentInformationSuboption)
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5600): Error: template std.format.unformatValueImpl cannot deduce function from argument types !(VendorSp
ecificInformationSuboption)(string, const(FormatSpec!char)), candidates are:
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5710): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = VendorSpecificInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
is(Unqual!T == bool)
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5724): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = VendorSpecificInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
is(T == typeof(null))
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5735): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = VendorSpecificInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
!is(T == enum)
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5771): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = VendorSpecificInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
isFloatingPoint!T
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5797): unformatValueImpl(T, Range, Char)(ref Range input, ref scope const FormatSpec!Char spec)
with T = VendorSpecificInformationSuboption,
Range = string,
Char = char
must satisfy the following constraint:
isSomeChar!T
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(5600): ... (3 more, -v to show) ...
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(713): Error: template instance std.format.unformatValue!(VendorSpecificInformationSuboption, string, char
) error instantiating
/usr/lib/ldc/x86_64-linux-gnu/include/d/std/format.d(656): instantiated from here: formattedRead!(string, char, VendorSpecificInformationSuboption*)
dhcptest.d(431): instantiated from here: formattedRead!("%s", string, VendorSpecificInformationSuboption*)
dhcptest.d(551): instantiated from here: VLList!(VendorSpecificInformationSuboption)
I've never used D before. I got the same errors with DMD.