Код ниже перенаправляет пакет параметров в определенный пользовательский вызываемый объект (в данном случае - указатель функции). Есть ли способ в C++ 11 вернуть возвращаемое значение callable? В частности, я хочу иметь возможность выводить возвращаемый тип для raise(), чтобы я мог добавить к нему оператор return. Я понимаю, что могу просто добавить параметр шаблона возвращаемого типа, но разве мы не знаем тип возврата из параметра шаблона Func?Пересылка возвращаемого значения общего вызываемого объекта
size_t example(const std::string& str)
{
return str.size();
}
template <class Func>
class signal
{
public:
signal()
{
}
~signal()
{
}
void attach(Func handler)
{
_handler = handler;
}
template <typename... T>
void raise(T&&... args)
{
auto val = _handler(std::forward<T>(args)...);
// How do I return this?
}
private:
Func _handler;
};
typedef size_t(*fcn)(const std::string&);
int main()
{
signal<fcn> sig;
sig.attach(&example);
sig.raise("hello!");
return 0;
}
Можете ли вы использовать функции C++ 14? – anderas