cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

type alias для Variadic Arguments или возврат Templates от класса #387

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +1, -0 Автор идеи: Андрей Марцинкевич

Разрешить возможность создавать алиасы для Variadic Arguments или как-то по другому с ними работать. Подробнее в примере:

Допустим есть функция

template <typename Tuple>
void foo(Tuple::Args&&... args)
{
 //DO WITH ARGS.
}

И для нее описан класс SomeTuple:

template<typename Args...>
struct SomeTuple
{
  using... Args = Args;
}

Либо как-то по другому.

Для чего это надо.

А нужно это для возможности агрегатной инициализации и что бы компилятор понимал сразу какие типы мы ожидаем.

foo<SomeTuple<SomeType1, SomeType2>>(/*SomeType 1*/{Param1, Param2}, /*SomeType 2*/{Param3, Param4})

Через make_integer_sequence такое вроде не сделаешь;

apolukhin commented 3 years ago

Анатолий Томилов, 26 декабря 2018, 13:52 Уже есть более общее предложение с "более допустимым" синтаксисом: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4235.htm

Здесь есть некоторое обсуждение https://stackoverflow.com/questions/32906650/