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