Программирование на грани фола?
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 14.01.09 15:36
Оценка:
Чего-то я сегодня разошелся

Был вот такой шаблон
template<class T>
inline t_numeric_limits<T> get_numeric_limits(T /*x*/)
{
 //это типа аналог std::numeric_limits
 return t_numeric_limits<T>();
}//get_numeric_limits

Замечательная вещь, для получения нижних/верхних границ переменных по их типам.

Сегодня понадобилось получить такие сведения для члена структуры. Типа что-то вроде
struct TData {int n};

//...
TData* p=NULL;

//...
cout<<get_numeric_limits(p->n).max_value();


Фигня в том, что p может так и остатья NULL-ом. Что приводит к AV. После небольшого тыкания, я переписал функцию так
template<class T>
inline t_numeric_limits<T> get_numeric_limits(const T& /*x*/)
{
 //это типа аналог std::numeric_limits
 return t_numeric_limits<T>();
}//get_numeric_limits


Все стало так, как хотел. Но появился червь сомнения — о простоте решения

Но ведь, в конечном итоге — sizeof(p->n) тоже не падает.

Что скажете по этому поводу?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.