我这一段代码:std :: is_same用于void函数(...)和void类型?
template <class FunctionType> class Entry {
std::function<FunctionType> internalFunction;
template<class... Arguments>
auto operator()(Arguments... arguments) -> decltype(internalFunction(arguments...)){
if (std::is_same<decltype(internalFunction(arguments...)), void>::value) {
internalFunction(arguments...);
} else {
auto result = internalFunction(arguments...);
return result;
}
}
};
Entry类,就是要包装的std::function
。它适用于所有返回类型,但有一个例外 - void
。我无法让它工作。我也尝试过std::is_void
,它不会为类型的函数返回true。 std::is_same
也一样。
如何解决这个问题?
'internalFunction'返回'std :: function'。我无法弄清楚你想要检查什么。 'internalFunction'永远不会返回'void'。 –