http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59144

Daniel Krügler <daniel.kruegler at googlemail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |daniel.kruegler@googlemail.
                   |                            |com

--- Comment #4 from Daniel Krügler <daniel.kruegler at googlemail dot com> ---
(In reply to tmmikolajczyk from comment #3)
> Why that's not a bug? No matter if the X::bar method is virtual or not it
> should not have any impact on access to it from the derived classes in this
> case IMHO.

If bar is not virtual, it will never be instantiated in your example code and
for the non-instantiated code no diagnostics is required. Making it virtual
provokes its instantiation irrespective of any other missing odr-usage. See
14.7.1 p11:

"An implementation shall not implicitly instantiate a function template, a
variable template, a member template, a non-virtual member function, a member
class, or a static data member of a class template that does not require
instantiation. It is unspecified whether or not an implementation implicitly
instantiates a virtual member function of a class template if the virtual
member function would not otherwise be instantiated."

In other words: You example code is not useful to demonstrate what you intend
to demonstrate.

Reply via email to