This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: libstdc++/4458


http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4458&database=gcc

 |>  It's not required to do so for efficiency (see 22.2.1.3.2, p5).
 
 §22.2.1.1.1/1: concerning std::ctype<>::is:
 
     Returns: do_is(m,c)
 
 Can't be any clearer than that.  The function do_is is required by the
 standard to be virtual, which means that the actual function called (and
 thus the actual semantics of the function is) depend on the dynamic type
 of the object.  This is, after all, the whole point behind defining the
 protected virtual functions -- any other interpretation, and having the
 protected interface makes sense.

No, you're quoting the requirement on the primary template, but your
issue (titled std::ctype<char>::is ...) is with the specialization on
char. The requirement I referred you to in 22.2.1.3.2, p5 is the one
that's relevant here. The reason for not calling the virtual function
from the ctype<char>::is() is, as I said earlier, for efficiency. 

Regards
Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]