是否可以在不使用 decltype 的情况下推断先前定义的外部变量的类型

Can the type of a previously defined extern variable be inferred without using 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; 的内容(当然,这行不通)。

你不能 - 开玩笑地说,因为没有人能够说服标准委员会能够编写的优点

int extern has_a_type;
auto has_a_type;

尽管它很容易处理。结果可能是

decltype(auto) has_a_type;

将是必要的,以便从初始化器中消除类型推导的歧义,然后,不幸的是,我们与已经可用的重复 decltype(has_a_type) 相去不远。