小编cag*_*man的帖子

指向全局运算符的函数指针在VC++上编译,而clang则给出错误

我试图在clang上编译以下代码,但它失败并出现以下错误:

error: no member named 'operator<' in the global namespace
Run Code Online (Sandbox Code Playgroud)

我尝试使用/ Za编译visual studio代码以切换到标准一致性,但它似乎仍然接受它.请赐教.

struct A
{
  int m_test;
  A(int test)
    : m_test(test)
  {

  }

  friend bool operator<(A left, A right);
};

int main()
{
  typedef bool(*TCompare)(A,A);
  TCompare compare = &::operator<;

  compare(9,7);
}
Run Code Online (Sandbox Code Playgroud)

VC++输出:https://godbolt.org/g/LAz56n

Clang输出:https://godbolt.org/g/zC2InO

c++ friend visual-c++ language-lawyer clang++

1
推荐指数
2
解决办法
87
查看次数

标签 统计

c++ ×1

clang++ ×1

friend ×1

language-lawyer ×1

visual-c++ ×1