介绍"auto"的同义词

Introducing synonyms for "auto"

本文关键字:同义词 auto 介绍      更新时间:2023-10-16

介绍"auto"的同义词

我想在c++中使用"几乎总是自动"的样式,但以更具描述性的形式,反映初始化的语义。
为了做到这一点,我想介绍auto的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(疯狂):是否有任何根本原因不允许在类型中使用auto(可实现性,与其他特性的不良交互)?(假设"typedef auto"可用,这个问题可以轻松解决)

不。Q2。通过尽可能少地使用它们。第三季。很坏。c++程序员习惯于给定的语法。第四季度。我不明白你想要什么,或者为什么。

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