将返回void的函数传递给接受void的函数
Pass a function returning void to a function accepting void?
所以,在折腾了一段时间之后,我无法获得它……为什么这还不是标准的一部分?
template<class T> accept_all(T) {}
void give_void() {}
int give_int() { return 1;}
int main() {
accept_all(give_void());
accept_all(give_int());
}
这将节省使用模板类专业化的相当多的麻烦。。。就一般语法而言,能够返回void而不能传递void没有什么意义。
我能做些什么,而不需要为每种方法类型专门化一个丑陋的"中介类"来调用这个东西吗?
谢谢。
编辑:那么,实现一个接受任何函数返回值的模板的好方法是什么呢?
我觉得它看起来真的很奇怪。为什么不连续调用这些函数:
give_void();
accept_void();
干净多了。
实际上,即使需要输入的符号数量相同,输入accept_void(give_void());
也不会节省任何费用。
编辑不确定我是否真的理解你想要实现的目标,但是:
template <typename Result, typename Callable>
static Result func(Callable c)
{
return c();
}
C++允许您从函数中return void
(请参阅返回无效代码吗?)。
然而,返回无效与接受无效有着显著的不同;请注意,int foo(void)
只是int foo()
的一种替代语法(已弃用),并且仅由于与C.兼容的历史原因而存在
你的建议打破了函数调用中参数数量与函数接受的参数数量相同的不变。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在c++类上调用void函数
- C++为什么尽管我调用了void函数,它却不起作用
- 如何从void函数输出字符串
- 如何将指针从一个void函数传递到另一个C++
- 为什么我在使用void函数时得到错误代码C2276
- 指针没有更新它在void函数内部指向的值
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- void 函数可以传递值参数吗?
- 在 void 函数中使用 #include 变量C++
- 如何在 C++ 中将 void 函数传递给 void 指针
- 使用运算符调用 void 函数时出错<set>
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- C++ :: 如何捕获由 void 函数创建的矩阵
- 如何将一个 void 函数传递给另一个 void 函数?
- 当我使用 void 函数的返回值(通过强制转换函数指针)时,究竟会发生什么?
- C++命名空间中调用 void 函数的错误
- 当数组位于两个循环之间时,您可以调用数组的 void 函数吗?
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 查找素数:错误:控件到达非void函数的末尾