On Monday, 3 February 2014 at 12:25:16 UTC, Dicebot wrote:
You have forgot to mention what behavior you are actually
trying to achieve ;) Common not-so-meaningful value is simply
T.init , but there can be no such thing as generic sentinel.
If you need cheap and simple way to figure out that attribute
was missing, change API to return value by out parameter and
turn normal return value into boolean success flag.
Thanks. T.init actually does the trick. The behavior:
auto name = myStruct.getAttribute("name");
if (name == "bla") {
// do something
} else {
// do something else
}
or (theoretically):
auto second = myStruct.getAttribute(1.0);
if (second > 1.5) {
// do something
} else {
// do something else.
}
I haven't got a use case for the second example, but it might be
handy for data analysis and I wanted to test how far you can go
with templates.
The reasoning behind it is that
string name;
try {
name = myStruct.getAttribute("name");
} // ...
is a bit awkward an OTT. I'd prefer to introduce
hasAttribute("name") instead, if I want to be sure it exists.
if (myStruct.hasAttribute("name))
name = myStruct.getAttribute("name");