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

--- Comment #8 from Nimrod <nimrodcowboy at gmail dot com> ---
(In reply to Jonathan Wakely from comment #6)
> (In reply to Nimrod from comment #4)
> > https://timsong-cpp.github.io/cppwp/n4659/func.require#3
> > "...A forwarding call wrapper is a call wrapper that can be called with an
> 
> This is irrelevant, std::forward isn't a call wrapper.
Yes. In which context, what I want to prove is the wording about "forwarding"
in the standard isn't related to the value of the object. I was thinking I can
provide a better example without ruining the std::forward implementation. I
just add a log in the specialization of std::forward and do nothing else. (to
record A is being "forwarded")
like, 

template<>
A&& forward(A& a) noexcept {
    std::cout << "recorded\n";
    return std::move(a);
}

I don't think this example will bring more help in this discussion. I was
trying to reproduce some more cases using std::swap but failed. 

> Anyway, specializing any function template from namespace std is explicitly
> forbidden since C++20, because it's not necessary or sensible to do it.

Ok. It's fair to me. A little off-topic question, what's the GCC's attitude to
features with defects being fixed in newer standards? Will GCC still support
them as the older standard says?

Reply via email to