У меня сейчас скомпилировался (gcc двухлетней давности) и даже успешно прошел тесты код с таким шаблоном:
template<typename ...Args, typename CbIn, typename CbOut = CbIn>
очевидно здесь налицо неоднозначность: если я инстанцирую это как <X, Y, Z> то что это:
Args=(X Y), CbIn=Z, CbOut=Z
или
Args=(X), CbIn=Y, CbOut=Z
??
Эта неоднозначность у меня видимо как-то устранилась за счет использования типов аргументов.
Я не могу понять, как на это дело смотрит стандарт?
Это должно компилироваться вообще??