【发布时间】:2013-05-20 19:48:24
【问题描述】:
你知道如何对字符串执行惰性求值,就像在这个 D sn-p 中:
void log(lazy string msg) {
static if (fooBarCondition)
writefln(…) /* something with msg */
}
实际上,问题可能根本不需要懒惰,因为 static if。也许可以在不使用时丢弃char const* 字符串?比如,在 C++ 中:
void log(char const *msg) {
#ifdef DEBUG
cout << … << endl; /* something with msg */
#else /* nothing at all */
#endif
}
有什么想法吗?谢谢。
【问题讨论】:
-
执行此类 IMO 的最佳方法是宏,以避免在不需要时构建要传递的消息。 (参见
assert宏) -
static if的使用看起来很诱人 -
@CaptainObvlious,这是
D元编程功能 -
@skp 我知道。它仍然很诱人。
-
@CaptainObvlious:它已被提交给 C++ 标准委员会,由于一些更深层次的影响,我不确定它是否会通过。当前的 C++ 允许通过
#ifdef进行类似的操作,但 ifdef 在预处理时进行评估,而static if是编译时评估(即可以使用模板、常量——不仅仅是其他定义——...
标签: c++ c++11 d lazy-evaluation