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

时间:2013-06-25 14:23:40

标签: c++ operators function-pointers

所以我有一个函数需要一个函数指针作为输入,其原型是这样的:

int function(int (*op)(int, int));

我想知道我是否可以为该函数指针传递一个运算符。具体来说,这是内置运算符:

int operator|(int, int);

我试过这个:

function(&(operator|));

并且遇到了这种错误:

error: no matching function for call to 'function(<unresolved overloaded function type>)'

我试过这个:

function(&(operator|(int, int)));

并且遇到了这种错误:

error: expected primary-expression before 'int'

我已经在文档中查找了这种情况,但是我得到了关于&#34;&#34;地址的信息。运算符(运算符&amp;)而不是关于运算符地址的事情......

编辑:

见上一个问题 Calling primitive operator-functions explicitly in C++

2 个答案:

答案 0 :(得分:3)

内置操作符|无法通过符号int访问两个int并返回operator|。例如,以下内容无法编译

int a = operator|(2,3);

答案 1 :(得分:1)

由于运算符不可用作函数,因此标准提供了一系列与运算符对应的仿函数。其中最着名的是std::less,它是排序排序,集合和地图的默认模板参数。

可以在functional标题中找到完整列表。最符合您要求的是std::bit_or

不幸的是,这些实现为operator()而不是函数的模板类,因此它们不适合您的特定用例。它们更适合模板。