是否有可能在name
内获取表达式(或标识符)的字符串表示?例如,拥有下一个代码:
vector<vector<double>> some_values{{5,0,8},{3,1,9}};
auto joined = some_values | ranges::view::join;
auto p = std::minmax_element(joined.begin(), joined.end());
是否可以在模板中获取p.first
表达式的字符串表示形式?
答案 0 :(得分:5)
您可以使用系统模块中的astToStr
魔法来执行此操作:
template foo*(name: untyped) =
var `name`* {.inject.}: string = ""
# Want to print 'name' here, not its value like with backticks
echo "the variable name is ", name.astToStr
foo test
输出将是:
the variable name is test
不鼓励使用最新版本的编译器来使用immediate
pragma。有关详细信息,请参阅以下答案:
typed vs untyped vs expr vs stmt in templates and macros