https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101923

--- Comment #1 from Petar Ivanov <dartdart26 at gmail dot com> ---
Benchmark code (using Google Benchmark):

#include <benchmark/benchmark.h>

#include <functional>
#include <utility>

struct Car {};

static void copy(benchmark::State& state) {
  for (auto _ : state) {
    const auto f = std::function<void(const Car&)>{};
    const auto copied = f;
    benchmark::DoNotOptimize(copied);
  }
}

static void move(benchmark::State& state) {
  for (auto _ : state) {
    auto f = std::function<void(const Car&)>{};
    const auto moved = std::move(f);
    benchmark::DoNotOptimize(moved);
  }
}

BENCHMARK(copy);
BENCHMARK(move);

BENCHMARK_MAIN();

Reply via email to