草庐IT

c++ - 为什么 GCC 的 std::function 不使用对按值传递的参数的右值引用在其内部委托(delegate)之间传递它们?

首先,考虑以下代码:#include#includestructNoisy{Noisy(){std::coutf=foo;f(n);}及其在不同编译器中的输出:VisualC++(seelive)Noisy()Noisy(constNoisy&)Noisy(Noisy&&)foo(Noisy)~Noisy()~Noisy()~Noisy()Clang(libc++)(seelive)Noisy()Noisy(constNoisy&)Noisy(Noisy&&)foo(Noisy)~Noisy()~Noisy()~Noisy()GCC4.9.0(seelive)Noisy()Noisy(