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

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-12-13
     Ever confirmed|0                           |1

--- Comment #5 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Ian Lance Taylor from comment #0)
> Our very own web page has a C++ FAQ about requires that a copy constructor
> be visible when initializing a const reference:
>     http://gcc.gnu.org/bugs/#cxx_rvalbind
> 
> However, current versions of gcc do not give an error for that code, even
> when using -pedantic -std=c++98.  The last version of gcc to give the error
> was gcc 4.2.  This seems ironic considering that we say "most popular
> compilers do not correctly implement this rule."
> 
> I think we should give that error when -pedantic.

Confirmed that there is still no error:

$ cat 44313.cc 
class A
{
public:
  A();

private:
  A(const A&);   // private copy ctor
};

A makeA(void);
void foo(const A&);

void bar(void)
{
  foo(A());       // error, copy ctor is not accessible
  foo(makeA());   // error, copy ctor is not accessible

  A a1;
  foo(a1);        // OK, a1 is a lvalue
}
$ /usr/local/bin/gcc -c -Wall -Wextra -pedantic -Weffc++ -std=c++98 44313.cc
$

(silence)

Reply via email to