小编jks*_*jks的帖子

使用本地类型声明的 g++ lambda ... 使用但从未定义 - 真的是一个错误吗?

如果没有,g++将不会编译此代码-fpermssive。clang 和 icc 都没有抱怨。这段代码合法吗?

\n\n

我的意图是声明wrapped_foo并在单独的编译单元中定义它。那可能吗?

\n\n

错误1.cpp

\n\n
auto wrap(int (*f)(int)){\n    return [f](int i) {\n        return f(i);\n    };\n}\n\nint foo(int);\nextern decltype(wrap(foo)) wrapped_foo;\n\nint func(){\n    return wrapped_foo(2);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n花园 -m gcc/7.3.0-01c7/bin g++ -Wall -Wextra bug1.cpp -c\nbug1.cpp:8:28: 错误: \xe2\x80\x98wrap(int (*)(int)) ::<lambda(int)>wrapped_foo\xe2\x80\x99,使用本地类型 \xe2\x80\x98wrap(int (*)(int))::<lambda(int)>\xe2\x80\x99 声明,已使用但从未定义 [-fpermissive]\n extern decltype(wrap(foo))wrapped_foo;\n ^~~~~~~~~~~\n
\n

c++ lambda g++

5
推荐指数
1
解决办法
5420
查看次数

标签 统计

c++ ×1

g++ ×1

lambda ×1