为“自动”介绍同义词“自动”
我想使用"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中使用auto(可执行性,与其他功能的不良交互)? (假设“typedef auto”可用,问题可以简单地解决)
Q4。由于'auto'不是某个类型的名称,因此不能使用'typedef'来引入新名称。与宏不同,'typedef'不能通过文本替换工作。 – molbdnilo