Явное разыменование нуля внутри 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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