所以我有一个函数需要一个函数指针作为输入,其原型是这样的:
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++
答案 0 :(得分:3)
内置操作符|无法通过符号int
访问两个int
并返回operator|
。例如,以下内容无法编译
int a = operator|(2,3);
答案 1 :(得分:1)
由于运算符不可用作函数,因此标准提供了一系列与运算符对应的仿函数。其中最着名的是std::less
,它是排序排序,集合和地图的默认模板参数。
可以在functional
标题中找到完整列表。最符合您要求的是std::bit_or
。
不幸的是,这些实现为operator()
而不是函数的模板类,因此它们不适合您的特定用例。它们更适合模板。