所以我有一个函数,希望函数指针作为输入,其原型如下所示:
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++中显式调用原始运算符函数
我正在尝试实现一个非常非常快的布尔表达式引擎。我使用它来表示非常大的状态空间中的状态,因此我需要它每秒处理尽可能多的操作。该引擎的根本是产品的总和。我遇到了一个优化NOT运算符的问题。例如,如果我有一个带有N个小项的乘积之和,每个小项都有大约M个变量,则尝试求反,将创建M ^ N个小项,然后使用espresso算法对其进行简化。如果在逆操作期间间歇运行espresso算法,则可以加快速度并节省一些内存,但这还不够。我怀疑自己是第一个遇到此问题的人,并且我尝试进行研究,但似乎找不到有效的方法来解决此问题。
有人能指出我正确的方向吗?