具有未知返回类型的Std函数

Wim*_*mps 3 c++ std-function

我试图在不直接知道返回类型的情况下声明std函数.

显然,它将在编译时知道,但我找不到正确的方式来声明它.

最重要的是,我需要创建一个容器,其中包含来自此函数返回的值.

template <typename... Args>
class Sample
{
public:
    Sample(Args... args, std::function</*unknown return type*/(Args...)> fnct) :
        _inputBuff(std::forward_as_tuple(std::forward<Args>(args)...))

    { }

    std::tuple<Args...>                     _inputBuff;
    std::vector</*unknown return type*/>    _resultBuff;

};
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

Lig*_*ica 10

你也不知道函数参数,并用模板参数解决了这个问题(好吧,参数包,因为有零或更多).

就返回类型做同样的事情!

template <typename ReturnType, typename... Args>
class Sample
{
public:
    Sample(Args... args, std::function<ReturnType(Args...)> fnct) :
        _inputBuff(std::forward_as_tuple(args...))

    { }

    std::tuple<Args...>     _inputBuff;
    std::vector<ReturnType> _resultBuff;
};
Run Code Online (Sandbox Code Playgroud)

(现场演示)

  • @Wimps:不确定你为什么要找.您是否设想过这种传统方法存在问题? (2认同)