Re: private destructor and templates
"Victor Bazarov" <v.Abazarov@comAcast.net> wrote in message
news:eh652e$ept$1@news.datemas.de...
Ben Voigt wrote:
"Victor Bazarov" <v.Abazarov@comAcast.net> wrote in message
news:eh5pnc$i7m$1@news.datemas.de...
Ben Voigt wrote:
I have a POD type with a private destructor.
No such thing. PODs cannot not have private anything, PODs cannot
have user-defined destructors (8.5.1/1, 9/4).
Hmmm, think you're right about the destructor. However private helper
functions are certainly possible in a POD.
_By definition_ the presence of private or protected member makes the
class non-POD. There can be no discussion or argument about it.
A POD cannot have non-public variables. But it can have public member
functions, correct? Then naturally these can use private helpers
internally. Or no?
I thought a POD was anything that is a drop-in replacement for some C
struct. That means (1) layout compatible and (2) no reduced visibility for
any member. If any existing variable became hidden, it would break code
that worked on the struct. If any new variables were added, they would
break the layout. Therefore there can be no non-public variables. However
member functions and static members of any type do not affect the layout,
and do not break existing code referring to structure members, so they are
permitted, regardless of visibility.
What do you call a class whose instances have no v-table, but isn't a
POD?
A class. A UDT, if you need to use a TLA. And what does v-table have
to do with it?
A v-table is what makes an object. Without a v-table, there is no
polymorphism, no RTTI, in fact no awareness of 'type'. A class without a
v-table is just an assembly of variables and functions in a naming scope,
hardly any different from a namespace.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask