Decltype, чтобы объявить параметр возвращаемого типа функции (без авто)

StackOverflow https://stackoverflow.com/questions/20353745

  •  25-08-2022
  •  | 
  •  

Вопрос

Для меня это выглядит как тривиальный вопрос, может быть, я не нашел правильную документацию ..

У меня есть структура A, и я хочу определить параметр B, чтобы иметь тип возврата функции a:

struct A{
    int operator[](int);
};

А потом в какой -то момент

decltype(A::operator[]) b = 0;

Я мог бы сделать это: но это уродливо ..

A a;
decltype(a[0]) b = 0;

(Это может быть двойной / int и т. Д.), Я не хочу использовать шаблоны.

Спасибо,

Это было полезно?

Решение

Я не совсем понимаю потребность, кроме игры с синтаксисом. Это именно то auto был разработан, и auto поддерживается тем же стандартом, который добавил decltype...

В любом случае, вам необходимо смоделировать вызов функции:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top