小编Mar*_*ley的帖子

在匿名名称空间中定义自定义相等运算符

我有一个C结构(在C头文件中),如下所示:

struct Foo {
  int a;
  int b;
  int c;
};
typedef struct Foo Foo;
Run Code Online (Sandbox Code Playgroud)

我想测试这些结构的两个向量的相等性,因此我想为我的翻译单元为此结构定义一个自定义的相等运算符。

我能够做到

static inline bool operator==(const Foo&, const Foo&) {...}
Run Code Online (Sandbox Code Playgroud)

但不是

namespace {
    bool operator==(const Foo&, const Foo&) {...}
}
Run Code Online (Sandbox Code Playgroud)

为什么std :: vector的相等模板找不到该运算符,并且有比在全局名称空间中插入静态内联更好的方法吗?

c++ c++17

4
推荐指数
1
解决办法
96
查看次数

标签 统计

c++ ×1

c++17 ×1