# Decltype (auto)

## Назначение

Идиома Decltype - это оператор языка C++, который возвращает тип выражения во время компиляции. Он позволяет определить тип переменной, функции или выражения, явно не задавая их.

## Решаемые задачи

* Определить точный тип выражения

В C++ тип переменной обычно указывается явно, либо компилятор выводит тип на основе инициализации переменной. Однако, в случае использования шаблонов или сложных выражений, иногда может быть сложно или невозможно явно указать тип. Используя идиому Decltype (auto), компилятор будет выводить тип переменной, исходя из типа выражения, которое присваивается этой переменной.

## Общая реализация на языке C++

{% hint style="info" %}
Тип переменной result определяется автоматически, при этом сохраняется ссылочность и константность выражения.
{% endhint %}

{% code fullWidth="true" %}

```cpp
int main(){
    int x = 42;
    const int& y = x;

    decltype(auto) result = y;

    std::cout << "result = " << result << std::endl;

    return 0;
}
```

{% endcode %}
