David Thornley wrote:
> OK, looks like templates and RTTI. These aren't exactly the latest
> features in the draft standard, but I don't expect them to be
> completely stable yet.
According to section 5.2.7 of the proposed C++ standard, in order for
dynamic_cast<T> to work, T must be a "complete" class--hence
the need for an explicit instantiation of T if it is a template.
This is an aspect of the language, not the compiler.
The section doesn't make clear whether the compiler has an obligation
to warn if T is an incomplete class. But even if it did, I'm writing
a toolkit and I resent the fact that its users (who aren't going to
be as familiar with C++'s quirks as I am) are going to have to know
and remember to use mysterious incantations in order for stuff to work.
> OK, so your compiler doesn't support the draft ANSI standard,
> and doesn't provide warnings or clues. This looks like an
> implementation problem to me. In particular, I don't think
> it's actually Stroustrup's fault you spent hours figuring this
> out. [...]
I admit haven't used many C++ compilers, (I don't program for PCs,
just SGIs and (rarely) Macs) but I have yet to use a C++ compiler
that worked as advertised, let alone supported the draft ANSI standard.
I've said before that the only thing I can imagine being worse than
programming in C++ is trying to implement C++. And this *is*
I'll let someone else address the comparison to Lisp.