作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果没有 -fpermssive
,g++ 将无法编译这段代码。 clang 和 icc 都没有提示。这段代码合法吗?
我的意图是在一个编译单元中声明wrapped_foo
,并在一个单独的编译单元中定义它。这可能吗?
bug1.cpp
auto wrap(int (*f)(int)){
return [f](int i) {
return f(i);
};
}
int foo(int);
extern decltype(wrap(foo)) wrapped_foo;
int func(){
return wrapped_foo(2);
}
garden with -m gcc/7.3.0-01c7/bin g++ -Wall -Wextra bug1.cpp -cbug1.cpp:8:28: error: ‘wrap(int (*)(int))::<lambda(int)> wrapped_foo’, declared using local type ‘wrap(int (*)(int))::<lambda(int)>’, is used but never defined [-fpermissive] extern decltype(wrap(foo)) wrapped_foo; ^~~~~~~~~~~
最佳答案
是的,这是可能的:
头文件
inline auto wrap(int (*f)(int))
{
return [f](int i) {
return f(i);
};
}
int foo(int i);
extern decltype(wrap(&foo)) wrapped_foo;
cpp文件
int foo(int i) { return i;}
decltype(wrap(foo)) wrapped_foo = wrap(&foo);
用法
int func(){
return wrapped_foo(42);
}
int main() {
std::cout << func() << std::endl;
}
关于c++ - g++ lambda declared using local type ... 已使用但从未定义 - 真的是错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033797/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!