我相信 D 有可能在其编译器套件中添加另一个很酷的功能,即禁止对纯函数进行非副作用调用的能力。
例如
auto s = "a";
toStringz(a);
应该像错误一样
a == "";
目前 DMD 中的错误为
Error: == has no effect in expression (s == "")
这样的功能可以防止程序员在期望它具有就地(变异)语义时意外调用非静音算法。这无需使用 GCC 的属性等显式标记__attribute((warn_unused_result))
函数__attribute((const))
。
DMD 的待办事项列表中有这样的功能吗?