Явное разыменование нуля внутри boost::geometryC++

Программы на C++. Форум разработчиков
Anonymous
Явное разыменование нуля внутри boost::geometry

Сообщение Anonymous »

MSVC предупредил меня об этом коде внутри point_concept.hpp внутри класса boost::geometry::concepts::Point:

Код: Выделить всё

template 
struct dimension_checker
{
static void apply()
{
P* p = 0;
geometry::set(*p, geometry::get(*p));
dimension_checker
::apply();
}
};
Код инициализирует p значением 0 (что означает ноль), а затем разыменовывает его. Это кажется настолько вопиющим, что я предполагаю, что это сделано намеренно; но я не могу понять мотивацию этого. Кто-нибудь знает, что это может быть?
(Я придумал одну теорию: возможно, они используют *p в качестве фиктивного значения, например std::declval ? Вам не нужно использовать конструкторы при объявлении указателя, поэтому вы можете схитрить, разыменовав указатель и получив (хотя и мусорное) значение.)

Подробнее здесь: https://stackoverflow.com/questions/791 ... stgeometry

Вернуться в «C++»