gpt4 book ai didi

C++ “+”(加号)在类实例前面

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:20 27 4
gpt4 key购买 nike

你好,我正在阅读 Mach7 的以下代码(顺便说一句,看起来不错,我想知道为什么 c++17 没有采用它,但那是题外话……)

bool operator==(const Term& left, const Term& right)
{
//std::clog << "(" << left << ',' << right << ')' << std::endl;
var<std::string> s;
//var<const Var&> v;
var<const Term&> v,t,f;

Match(left,right)
{
Case(C<Var>(s), C<Var>(+s) ) return true;
Case(C<Abs>(&v,&t), C<Abs>(&+v,&+t)) return true;
Case(C<App>(&f,&t), C<App>(&+f,&+t)) return true;
Otherwise() return false;
}
EndMatch

return false; // To prevent all control path warning
}

(参见 here)

第二个匹配案例中的“+s”是什么意思?从语义上讲,它的意思应该是“通过调用构造函数使另一个类似 s”,但我从未见过这种语法。

最佳答案

在四处寻找之后(因为没有那种类型的类实现 unary operator +,我很惊讶地发现)他们似乎创建了一个 unary + 运算符,他们包括来自 equivalence.hpp

TL;DR,它们在全局命名空间中有如下内容:

template <typename T>
inline auto operator+(T&& t) noexcept { return true; }

除了他们确实做了一些事情。 :)

关于C++ “+”(加号)在类实例前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870084/

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