Чего-то я сегодня разошелся
Был вот такой шаблон
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) тоже не падает.
Что скажете по этому поводу?
-- Пользователи не приняли программу. Всех пришлось уничтожить. --