Clang вправе отклонить это в соответствии с [dcl.spec.auto] / 10 , начиная с C ++ 17.
Если требуется тип сущности с неопределенным типом заполнителя
чтобы определить тип выражения, программа плохо сформирована.
Тип foo
необходим для разрешения рекурсивного вызова (найти operator()
и т. Д.). Нужно определить тип закрытия. Поскольку здесь выводится тип замыкания ... вы видите, куда он идет.
GCC может доказать, что не всегда невозможно обойти это, но в целом стандарт запрещает это.