Вводим синонимы для "авто"
Вводим синонимы для "auto"
Я хотел бы использовать "почти всегда авто" стиль С++, но в более описательной форме, отражающей семантику инициализации.
Для этого я хочу ввести синонимы для 4 различных видов использования auto.
Общую идею можно понять из примера:
#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 (insane): существуют ли какие-либо фундаментальные причины для запрета auto в typedefs (реализуемость, плохое взаимодействие с другими функциями)? (Предполагая, что "typedef auto" доступен, проблема может быть решена тривиально)