8

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

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'

我在文档中寻找过这种情况,但我得到的是关于“地址”运算符(operator&)的东西,而不是关于运算符地址的东西......

编辑:

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

4

2 回答 2

3

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

int a = operator|(2,3);
于 2013-06-25T14:42:06.790 回答
2

因为算子不能作为函数使用,所以标准提供了一系列对应于算子的函子。其中最著名的是std::less用于排序、集合和映射的默认模板参数。

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

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

于 2013-06-25T15:00:49.550 回答