Вводя синонимы к «авто»Введение синонимов для «авто»
я хотел бы использовать "Almost always auto" стиль с C++, но в более описательной форме, отражающей семантику инициализации.
Для этого я хочу ввести синонимы для 4 различных применений авто.
Основная идея может быть понята из примера: возникают
#define Val const auto // initialize (immutable) value
#define MVal auto // initialize mutable value
#define Ref const auto& // initialize (immutable) reference
#define MRef auto&& // initialize mutable reference
Val num = 2 + 2;
MVal count = 0;
++count;
Ref widget = GetWidget();
MRef gadget = GetGadget();
gadget.ChangeState();
Несколько вопросов:
Q1: Может ли синонимы быть введены без макросов?
Q2: Если макросы неизбежны, как смягчить вред от их использования (предполагается, что синонимы должны быть очень короткими)?
Q3 (в основном на основе мнения): Это хорошая идея вообще (по сравнению с голой AAA-стилем) с точки зрения читаемости/стиля?
Q4 (безумный): Существуют ли основополагающие причины для отказа авто в typedefs (возможность реализации, плохое взаимодействие с другими функциями)? (Предполагая, что «typedef auto» доступен, проблема может быть решена тривиально)
Q4. Поскольку 'auto' не является именем типа, вы не можете ввести новое имя, используя' typedef'. 'typedef' не работает с помощью подстановки текста, в отличие от макросов. – molbdnilo