我使用VS2013编译器构建这些成员函数:
template<typename R, typename ...Args>
fc::variant memberfoo( const std::function<R(Args...)>& f, variants::const_iterator a0, variants::const_iterator e )const
{
return fc::variant(f(Args...)); // error C2440: '<function-style-cast>' : cannot convert from 'void' to 'fc::variant'
}
template<typename ...Args>
fc::variant memberfoo(const std::function<void(Args...)>& f, variants::const_iterator a0, variants::const_iterator e)const
{
f(Args... );
return fc::variant();
}
我认为错误的原因是编译器没有按当前模板类型的参数选择成员&#34; std :: function&lt; void(Args ...)&gt; &安培;&#34;在这种情况下,他选择第一个memberfoo。
如何帮助编译器按类型std :: function&lt;选择成员some_function_declaration&gt; ?或者其他一些提示如何调整代码以进行编译?