| |
| Posted by jfondren in reply to DLearner | PermalinkReply |
|
jfondren
Posted in reply to DLearner
| On Wednesday, 25 August 2021 at 22:52:23 UTC, DLearner wrote:
> On Wednesday, 25 August 2021 at 22:33:00 UTC, H. S. Teoh wrote:
[...}
> I think what you meant to write is:
static if (typeof(mixin(VarName)).stringof == "uint") {
You want the type of the variable named by VarName, not the type of VarName.
T
I understand your reasoning, but:
void main() {
import std.stdio;
uint TestVar = 5;
string mxnWrite_Size_t(string VarName) {
static if (typeof(mixin(VarName)).stringof == "uint") {
return `write("` ~ VarName ~ `");`;
} else {
return `writeln("Apparently TestVar not a uint");`;
}
}
mixin(mxnWrite_Size_t("TestVar"));
}
produced Error: variable VarName cannot be read at compile time
Contrast:
void main() {
import std.stdio;
uint TestVar = 5;
string mxnWrite_Size_t(string VarName)() {
static if (typeof(mixin(VarName)).stringof == "uint") {
return `write("` ~ VarName ~ `");`;
} else {
return `writeln("Apparently TestVar not a uint");`;
}
}
mixin(mxnWrite_Size_t!"TestVar");
}
Output: TestVar
|