我有一个看起来像这样的代码 - 它大大简化了,但这个代码片段编译并展示了相同的行为:
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;
}
Run Code Online (Sandbox Code Playgroud)
随着-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 …Run Code Online (Sandbox Code Playgroud)