C++中运算符的函数指针

Ned*_*ham 8 c++ function-pointers operators

所以我有一个函数,希望函数指针作为输入,其原型如下所示:

int function(int (*op)(int, int));
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以为该函数指针传递一个运算符.特别是这个内置的运算符:

int operator|(int, int);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

function(&(operator|));
Run Code Online (Sandbox Code Playgroud)

并得到这种错误:

error: no matching function for call to 'function(<unresolved overloaded function type>)'
Run Code Online (Sandbox Code Playgroud)

我试过这个:

function(&(operator|(int, int)));
Run Code Online (Sandbox Code Playgroud)

并得到这种错误:

error: expected primary-expression before 'int'
Run Code Online (Sandbox Code Playgroud)

我在文档中查找了这种情况,但是我得到了关于"地址"运算符(运算符&)而不是关于运算符地址的事情....

编辑:

请参阅上一个问题 在C++中显式调用原始运算符函数

Joh*_*åde 3

内置运算符 | 需要两个int并返回一个int无法通过符号访问operator|。例如,以下内容无法编译

int a = operator|(2,3);
Run Code Online (Sandbox Code Playgroud)

  • 那是因为该功能不存在。内置运算符不是函数,即使它们的行为就像用于重载决策一样。 (3认同)
  • @user763305一旦变成`std::function`,也可以使用`std::bit_or` (2认同)