Re[2]: Массив и указатель: преобразование
От: Erop Россия  
Дата: 16.09.10 16:27
Оценка:
Здравствуйте, achp, Вы писали:

А>>обратное преобразование требует целый reinterpret_cast<> ?

A>Э… А можно конкретный пример такого reinterpret_cast?

А в чём проблема?
template<typename T> struct RefOf{ typedef T& Type; };
template<int N, typename T> typename RefOf<T[N]>::Type ptrToArray( T* ptr )
{
    return *reinterpret_cast<T(*)[N]>( ptr );
}
ну и пример использования:
void foo()
{
    int a[5];
    
    int* p = a;
    int (&r)[5] = a;
    int (&r1)[4] = ptrToArray<4>( p + 1 );
}
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.