C ++ 0x Variadic Parameter Pack: Синтаксис

следующий фрагмент кода не компилируется под gcc4.6.1:

template <typename... TS>
void do_stuff(TS... ts)
{
  auto f = [](TS... things) { };
}

Он выдает ошибку о том, что пакет вещей не был расширен. Однако следующий код компилируется:

template <typename... TS>
void do_stuff(TS... ts)
{
  auto f = [](TS... things...) { };
}

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

Является ли это допустимым синтаксисом C ++ 0x (фрагмент, который компилируется) или это просто причуда GCC, когда дело доходит до работы с вариативными типами?

10
задан Cœur 31 December 2016 в 16:46
поделиться