следующий фрагмент кода не компилируется под 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, когда дело доходит до работы с вариативными типами?