C++ 介绍“的同义词”;“自动”;

C++ 介绍“的同义词”;“自动”;,c++,coding-style,auto,C++,Coding Style,Auto,介绍“自动”的同义词 我希望使用C++的样式,但是用一种更为描述性的形式来反映初始化的语义。 为此,我想介绍汽车4种不同用途的同义词。 从示例中可以理解总体思路: #define Val const auto // initialize (immutable) value #define MVal auto // initialize mutable value #define Ref const auto& // initialize (immutable) reference #d

介绍“自动”的同义词

<>我希望使用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”可用,问题可以简单地解决)

Q1。是的,同义词可以通过这种方式引入。问题2。使用ALLUPPERCASE来遵循约定。第三季度。但一般来说,这不是一个好主意,我会发现
const auto
VAL
Q4更具可读性。我认为它不受支持,因为typedef是一个已定义的类型,而const auto不是。

Q1。不 问题2。尽可能少地使用它们。 第三季度。很糟糕。C++程序员使用给定的语法。
第四季度。我不明白你想要什么,或者为什么。

+1,我同意,这样的同义词充其量只是误导<代码>常量自动&是非常自我记录的。由于
auto
不是类型的名称,因此不能使用
typedef
引入新名称<与宏不同,代码>类型定义不通过文本替换工作。