如何使运算符具有显式参数c ++

时间:2016-04-25 20:04:39

标签: c++ operator-overloading std-function explicit

考虑一些代码:

{{1}}

如何才能使这个例子明确无误?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是允许std::function<void(Args...)>放弃返回类型 - 因此std::function<void()>std::function<bool()>都可以从bool(*)()构建。后者将从bar返回,但前者将丢弃它。这是完全有效的行为,但导致这种行为含糊不清。

你可能想要的是完全避免std::function

template <class F>
void operator=(F f) { f(); }