You're viewing a comment by Julien and its responses.

Julien Permalink
June 19, 2010, 00:45

Casting any pointer to void* could be considered a limited form of built-in, dynamic, parametric polymorphism.

By stretching things a bit further, you could even see const_cast and reinterpret_cast as falling into the same category.

Comment Responses

fulano Permalink
June 19, 2010, 06:39

Agreed. However,

a) inheritance and virtual functions

b) function overloading

c) templates

are all built-in mechanisms for the *creation* of new polymorphic components in a C++ program. These casts simply *are* polymorphic components: you have no means of extending the set.

You could argue that you can use them (especially the void*) to create new polymorphic components, but then *I* wouldn't call it a built-in mechanism any more (it becomes a Turing-trivial argument).

Still, I appreciate the observation. I hadn't thought of the casts in this light before.

Reply To This Comment

(why do I need your e-mail?)

(Your twitter handle, if you have one.)

Type the word "0day_224": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.