gpt4 book ai didi

c++ - 是否可以使用仿函数作为 std::function 的模板参数?

转载 作者:可可西里 更新时间:2023-11-01 11:24:37 24 4
gpt4 key购买 nike

我正在尝试查找用于编译此示例 C++ 代码的 g++ 编译器参数:

#include <stdio.h>
#include <functional>

struct mystruct
{
int a;
int operator()(int y) { return y + 1; }
};

int main()
{
std::function<mystruct> foo;
return 0;
}

在 cpp 引用中写道,std::function 模板参数可以是“...或其他函数对象”。我在包含多个 std::function 的大型项目上工作,并且项目可以使用 g++ 构建。我正在尝试在 VS2015 下构建它,但此类代码的编译器会提示:

错误 C2027:使用未定义的类型 'std::_Get_function_impl<_Fty>' 和 [ _Fty=我的结构 ]

当我尝试使用 -std=c++11 在 g++ 下编译上面的小示例时,它也提示:

错误:集合 'std::function a' 的类型不完整,无法定义

所以我认为在我们的大型可构建项目中,g++ 可能已经切换了一些提供这种功能的扩展。

最佳答案

可能您混淆了模板参数和要存储的函数对象。我相信你想写的是

std::function<int(int)> foo{mystruct{}};

关于c++ - 是否可以使用仿函数作为 std::function 的模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com