Использование !!, &* и подобного
От: _pk_sly  
Дата: 01.07.18 09:44
Оценка: 2 (1) -2
Всем привет!

Кто как относится к использованию таких, как бы, операторов в C++ как "!!", "&*" и подобных? (а кстати, каких?)

У меня на работе возник спор. Мои коллеги, опытные С++ программисты, сказали мне, что они смотрят на эти знаки в упор и вообще не понимают, что это такое.

Между тем, например, оператор ! является не просто логическим "не", но другая его важная функция — преобразование аргумента в bool. Вот так вот, одним символом. Другое дело — что он от этого bool делает ещё и отрицание, а вот чтобы просто преобразовать в bool, крайне удобно использовать !!.
Если у вас там, например, указатель или число или вообще — класс, а то и шаблон и вам надо получить bool, !! — крайне удобная штука. Пользуюсь уже этим, чтобы не соврать, лет 15.

Ну или вот &*. Есть у нас любого вида smart pointer. Для примера возьмём unique_ptr. Для того, чтобы программист не запутался, неявная конверсия — запрещена. Зато, есть оператор *.
Ну и что же у нас получается? Удобный способ получить ссылку на значение — есть, а вот чтобы получить указатель, надо вызывать специальный метод .get().
Тут поможет &*.
Ну а в макросах и шаблонах эта штука и вовсе — незаменима. Независимо, передали туда настоящий указатель или класс, это сработает.

Наверняка есть и другие удобные штуки, но этими я пользуюсь постоянно.

Как думает сообщество, действительно ли это — какая-то нечитаемая непонятная хрень, которой не стоит пугать людей или же нормальная техника C++?

Речь не идёт об обфускации или приколах типа "оператор стремления -->".
с++ operator macros templates
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.