gpt4 book ai didi

templates - 如果模板为真,如何使模板函数为常量

转载 作者:行者123 更新时间:2023-12-01 11:39:44 25 4
gpt4 key购买 nike

我有一个带有 bool 模板参数 (is_const) 的类方法,它仅在 is_const 为 false 时调用可变函数(使用 static if)。我怎样才能告诉 D 编译器使这个函数为 is_const = true 而不是 is_const=false 的常量?我不想复制粘贴该功能,但我看不到任何其他方法。 (我不能使用 inout,因为它确实对 is_const=false 和 is_const=true 表现不同)

最佳答案

您可以添加一个 const 重载,转发到事实上的 const 实现:

class C
{
void m(bool is_const)() // de-facto const when is_const is true
{
static if(!is_const) {/* ... mutate ... */};
}
void m(bool is_const)() const if(is_const)
{
return (cast() this).m!true();
}
}

然后您必须格外小心,不要在设置 is_const 时发生变异。

关于templates - 如果模板为真,如何使模板函数为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com