小编Gam*_*ama的帖子

一个非捕获的变量可以被lambda参数遮蔽吗?

我有一个看起来像这样的代码 - 它大大简化了,但这个代码片段编译并展示了相同的行为:

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)

c++ lambda shadow clang++

4
推荐指数
1
解决办法
931
查看次数

标签 统计

c++ ×1

clang++ ×1

lambda ×1

shadow ×1