idealvin / coost

A tiny boost library in C++11.
Other
3.97k stars 561 forks source link

flag定义变量问题 #323

Closed masterdrone1999 closed 1 year ago

masterdrone1999 commented 1 year ago

我使用 DEF_bool(b, false, ""); 方法定义 FLG_b变量,但是出现Variable 'FLG_b' cannot be implicitly captured in a lambda with no capture-default specified 错误,不知如何解决

masterdrone1999 commented 1 year ago

目前我的解决办法是在flag.h 的 _CO_DEF_FLAG()中的lambda函数中增加[&],对外部变量进行引用捕获,不知道会不会影响其他的地方

idealvin commented 1 year ago

我使用 DEF_bool(b, false, ""); 方法定义 FLG_b变量,但是出现Variable 'FLG_b' cannot be implicitly captured in a lambda with no capture-default specified 错误,不知如何解决

你这个似乎是在函数内使用DEF_bool,这个是不支持的; 在全局范围使用 DEF_bool 就可以了。

目前仅 DEF_string 支持在函数内使用,不过一般极少这样用。

idealvin commented 1 year ago

目前我的解决办法是在flag.h 的 _CO_DEF_FLAG()中的lambda函数中增加[&],对外部变量进行引用捕获,不知道会不会影响其他的地方

这个是不行的,在函数内使用 DEF_bool 定义的 FLG_b 是局部变量,[&]引用捕获局部变量是不安全的

masterdrone1999 commented 1 year ago

明白了,现在问题解决了