是否可以在不使用 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)
相去不远。
// 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)
相去不远。