[Bug libstdc++/57336] New: [4.8/4.9 Regression] Cannot INVOKE a reference_wrapper around an abstract type
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon May 20 10:42:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57336
Bug ID: 57336
Summary: [4.8/4.9 Regression] Cannot INVOKE a reference_wrapper
around an abstract type
Product: gcc
Version: 4.8.1
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: libstdc++
Assignee: redi at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
This C++11 example no longer compiles:
#include <functional>
struct ABC
{
virtual bool operator()() const = 0;
};
struct Concrete : ABC
{
virtual bool operator()() const { return true; }
};
Concrete c;
ABC& abc = c;
auto b = std::cref(abc)();
I think we're just missing an rvalue-ref on the function argument and in the
result_of argument in the first overload of __invoke, which is also necessary
to get the right answer when invoking function objects with ref-qualified
function call operators (something I plan to finish support for asap)
More information about the Gcc-bugs
mailing list