Может ли тип ранее определенной внешней переменной быть выведен без использования decltype - PullRequest
0 голосов
/ 08 октября 2018
// 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, поэтому мне не нужно вводить (или даже знать, в некоторой степени) тип объявленной (1) переменной extern при определении (3) (и, возможно,инициализация) это.Однако decltype вынуждает меня дважды написать имя переменной (возможно, полностью квалифицированной и длинной) (2).

Как мне избежать ее записи дважды?Что-то вроде auto has_a_type; (что, конечно, не работает).

1 Ответ

0 голосов
/ 08 октября 2018

Вы не можете - откровенно, потому что никто не убедил комитет по стандартам в том, что он может написать

int extern has_a_type;
auto has_a_type;

, несмотря на его гибкость.Может оказаться, что

decltype(auto) has_a_type;

будет необходимо для устранения неоднозначности вывода типа из инициализаторов, а затем, к сожалению, мы не слишком далеки от повторяющегося decltype(has_a_type), который уже доступен.

...