是否可以为重载运算符编写lambda表达式?
例如,我有以下结构:
struct X{
int value;
//(I can't modify this structure)
};
Run Code Online (Sandbox Code Playgroud)
X需要==运营商
int main()
{
X a = { 123 };
X b = { 123 };
//[define equality operator for X inside main function]
//if(a == b) {}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
==运算符可以定义为bool operator==(const X& lhs, const X& rhs){...},但这需要添加单独的函数,并且我的比较仅在特定函数内有效.
auto compare = [](const X& lhs, const X& rhs){...}将解决问题.我想知道我是否可以将这个lambda编写为运算符.
是否可以为重载运算符编写lambda表达式?
没有.
操作员过载功能必须是功能或功能模板.它们可以是成员函数,成员函数模板,非成员函数或非成员函数模板.但是,它们不能是lambda表达式.
从C++ 11 Standard/13.5重载运算符,第6段:
运算符函数应该是非静态成员函数或者是非成员函数,并且至少有一个参数,其类型是类,对类的引用,枚举或对枚举的引用.
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |