Дедукция вывода типа для auto

Максим Некипелов
Максим Некипелов

В языке не помешал бы инструмент, который позволял добавить дедукцию для вывода типа в auto. Предлагаю добавить ключевое слово auto_deduction, которое и будет этим заниматься.

 

Как это работает сейчас:

template<class T>
struct Property
{
    operator T() const { return { }; }
};

int main()
{
    auto value = Property<int>{ }; // auto будет иметь тип Property<int>
}

 

Как предлагаю сделать:

template<class T>
struct Property
{
    operator T() const { { }; }
};

template<class T>
auto_deduction Property<T> = T;

int main()
{
    auto value = Property<int>{ }; // будет иметь тип int
}

 

Также для этого дела не помешала перегрузка:

template<class T>
struct Property
{
    operator T() const { { }; }
};

template<class T>
auto_deduction Property<T> = T;

auto_deduction Property<float> = double;

int main()
{
    auto value = Property<float>{ }; // будет иметь тип double
}

 

Ну и аналогично поддержку концептов из C++ 20.

-6
рейтинг
1 комментарий
Nikola_g

Не понятно, что за проблема побудила ввести такой синтаксис?

Nikola_g
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения