Здравствуйте Sergei, Вы писали:
S>Как узнать на что указывает void*
На void.
S>Поможет ли static_cast<Тип*>(VoidPtr) и возвратит ли он корректное значение?
static_cast<>() всегда возвращает корректное значение

. В с++ нет оператора преобразования, который бы угадывал тип объекта, на который указыавет void*.
Здравствуйте Sergei, Вы писали:
S>Как узнать на что указывает void*
Честно — никак.
В принципе, можно в память складывать сигнатуры и пытаться определить, ожидаемый ли там тип или нет, но это
— зависит от компилятора
— зависит от платформы
— может зависить от фазы луны помноженой на уровень радиоактивных осадков на марсе в момент прохождения парада по Красной Площади
А зачем?
... << J 1.0 alpha 4 >>
Здравствуйте Sergei, Вы писали:
S>Есть конструкция
S>if (const T* temp=static_cast<T*>(VoidPtr))
S>{
S>
S>}
S>возвратит ли static_cast NULL, если VoidPtr не является типом T
Я полагаю, что VoidPtr объявлен как void*, иначе поясни что это такое.
static_cast не годится:
The result of the expression static_cast<T>(v) is the result of converting the expression v to type T.
...
An expression e can be explicitly converted to a type T using a static_cast of the form
static_cast<T>(e) if the declaration “T t(e);” is wellformed,
for some invented temporary variable
t (8.5).
dynamic_cast тоже, очевидно, не спасёт:
The result of the expression dynamic_cast<T>(v) is the result of converting the expression v to type
T.
...
If T is a pointer type, v shall be an rvalue of a pointer to complete class type, and the result is an rvalue of type T. If T is a reference type, v shall be an lvalue of a complete class type, and the result is an lvalue of the type referred to by T.
reinterpret_cast очевидно всегда вернёт T* указывающий на ту же область памяти.
Так что стандартными кастами ты ничего не добъёшься, объясни конкретную задачу, тогда может найдётся конкретное решение.
... << J 1.0 alpha 4 >>