我有一段代码看起来像这样 - 这只是一个大大简化的片段,但这个片段编译并表现出了相同的行为:
template <typename TFunc>
float FloatSelect( const float in_value, TFunc&& Predicate) {
return std::forward<TFunc>(Predicate)(in_value) ? in_value : 0.0f;
};
void DisplayFloatSelect() {
const float value = FloatSelect(
-1.0f,
[] (const float value) { return value > 0.0f; }
);
std::cout << value << std::endl;
}
启用 -Wshadow 后,编译器会发出以下警告(如此处所示):
12 : warning: declaration shadows a local variable [-Wshadow]
[] (const float value) { return value > 0.0f; }
^
10 : note: previous declaration is here
const float value = FloatSelect(
^
这并没有什么帮助 - 我明白变量阴影的含义,但是由于lambda没有捕获任何东西,在这里应该没问题。
我错过了什么吗?