当前位置: 首页 > 知识库问答 >
问题:

C11-result_of、Decktype、std::f和变量模板一起工作

傅新
2023-03-14

我在使用std::result_of、decltype和std::function时遇到了很多麻烦

使用可变模板。

我有以下功能-

int foo(int a, int b, int c) {
    std::cout << a << b << c << std::endl;
    return 0;
}

下一节课呢

template <class T, class... Args>
class VariadicTest {
public:
    VariadicTest(const T& func, Args... args) : func(func) {};
private:
    T func;
};

我希望类中有一个成员保存lambda表达式,

为此我需要一个d::f。

我的问题是我如何正确地定义d::f。

这个类的用例如下所示-

VariadicTest(foo, 1,2,3);

现在我有了T=int u-cdecl(int,int,int)和Args=(int-1,int-2,int-3)

因此,我想要一个成员函数,其外观如下:

std::function<std::result_of<T(Args...)::type(Args...)>

现在这当然没有编译,我尝试过的50个左右的东西也没有编译。

对于这个例子,我基本上需要以下声明

std::function<int(int,int,int)> _f;

当然,根据给定的T和Args,这是自动化的。

共有1个答案

谭高峯
2023-03-14

请尝试以下操作:

template <class T, class... Args>
class VariadicTest {
public:
    VariadicTest(const T& func, Args... args) : func(std::bind(func, args...)) {};
private:
    using result_type_t = typename std::result_of<T(Args...)>::type;
    std::function<result_type_t()> func;
};
 类似资料:
  • 我有困难使用在我的函数,采取可变模板。我开始认为我不需要使用可变模板,但我已经尝试了这么久,我在杂草中思考,需要一个有新面貌的人。 下面的模板函数接受一个常规模板参数,然后接受一个可变参数。它导致编译器错误: 编译器错误: 错误1错误C2664:“状态组件::registerEvent” 这里到底出了什么问题?我如何修复这个编译器错误?

  • 问题内容: 当我使用Django模板渲染器渲染页面时,可以传入包含各种值的字典变量,以使用来在页面中对其进行操作。 有没有办法在Javascript中访问相同的变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够基于传入的变量中包含的值使用AJAX查找来查找详细信息。 问题答案: 将直接替换为HTML。查看资料;它不是“变量”或类似的变量。它只是渲染的文本。 话虽如此,你可以将

  • template.defaults.imports 模板通过 $imports 可以访问到模板外部的全局变量与导入的变量。 导入变量 template.defaults.imports.log = console.log; <% $imports.log('hello world') %> 内置变量清单 $data 传入模板的数据 $imports 外部导入的变量以及全局变量 print 字符

  • 问题内容: 当我使用Django模板渲染器渲染页面时,可以传入包含各种值的字典变量,以使用来在页面中对其进行操作。 有没有办法在Javascript中访问相同的变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够基于传入的变量中包含的值使用AJAX查找来查找详细信息。 问题答案: 将直接替换为HTML。查看资料;它不是“变量”或类似的变量。它只是渲染的文本。 话虽如此,你可以将

  • 问题内容: 我正在使用Google App Engine和Django模板。 我有一个想要显示对象的表格,如下所示: Django模板是: 现在Django文档指出当它看到一个。在变量中 它尝试几种方法来获取数据,其中之一是字典查找,这正是我想要的,但似乎没有发生… 问题答案: 我找到了一种在内部获取变量的“更好”的解决方案,虽然不是最好的方法,但是它可以工作。 你将自定义过滤器安装到Django

  •   - f - fd_bits : fd_set fifo : rt_pipe_device flag : rt_alarm , rt_alarm_setup , rt_completion , rt_device , rt_object , rt_wqueue flags : rt_i2c_bus_device , rt_i2c_msg , rt_thread framebuffer : rt_