digitalmars.D - Why does formattedRead take a non-const ref?
- Andrew Godfrey (19/19) Aug 28 2014 The first parameter of formattedRead is a non-const ref. Is there
- Vladimir Panteleev (5/8) Aug 28 2014 formattedRead takes an input range as the first parameter, and
- Andrew Godfrey (3/11) Aug 28 2014 Ah, thanks! I should have posted this in D.learn, sorry.
- Dicebot (3/3) Aug 28 2014 const(char)[] tmp = date;
The first parameter of formattedRead is a non-const ref. Is there a good reason for this? e.g. the below doesn't compile, but if I remove the 'const' from Foo.normalize, then it succeeds: unittest { import std.datetime; struct Foo { string date; DateTime normalize() const { import std.format, std.exception; int month, day, year; enforce(3 == formattedRead(date, "%d/%d/%d", &month, &day, &year)); return DateTime(year, month, day, 0, 0, 0); } } Foo foo = Foo("12/2/2014"); assert(foo.normalize == DateTime(2014, 12, 2, 0, 0, 0)); }
Aug 28 2014
On Friday, 29 August 2014 at 04:21:54 UTC, Andrew Godfrey wrote:The first parameter of formattedRead is a non-const ref. Is there a good reason for this?formattedRead takes an input range as the first parameter, and consumes it as it is going through the format string. On exit, the range will contain the remainder of the initial range after all fields have been read and parsed.
Aug 28 2014
On Friday, 29 August 2014 at 04:29:31 UTC, Vladimir Panteleev wrote:On Friday, 29 August 2014 at 04:21:54 UTC, Andrew Godfrey wrote:Ah, thanks! I should have posted this in D.learn, sorry.The first parameter of formattedRead is a non-const ref. Is there a good reason for this?formattedRead takes an input range as the first parameter, and consumes it as it is going through the format string. On exit, the range will contain the remainder of the initial range after all fields have been read and parsed.
Aug 28 2014
const(char)[] tmp = date; enforce(3 == formattedRead(tmp, "%d/%d/%d", &month, &day, &year));
Aug 28 2014