是否可以在不使用decltype

时间:2018-10-08 15:03:06

标签: c++ c++11 extern decltype

// header

int extern has_a_type; // (1) extern declaration

// implementation

decltype(has_a_type)   // (2) unnecessarily verbose type inference code
has_a_type;            // (3) definition

我了解我可以使用decltype,因此在定义(3)(并可能进行初始化)时,实际上不必键入(甚至在某种程度上知道)声明的外部变量(1)的类型。 )。但是decltype迫使我两次(2)写出变量的名称(可能是完全限定且很长)。

如何避免写两次?与auto has_a_type;相似(当然不起作用)。

1 个答案:

答案 0 :(得分:3)

您不能-刻薄地进行,因为没有人说服标准委员会认为可以写作的优点

int extern has_a_type;
auto has_a_type;

尽管具有易处理性。可能会发现

decltype(auto) has_a_type;

为了使类型推导与初始化方法毫无歧义,将是必要的,然后,不幸的是,我们与已经存在的重复的decltype(has_a_type)相距不远。