Если шаблон функции возвращает decltype(auto) (или другой спецификатор типа с помощью auto), но оператор return будет плохо сформирован, получается SFINAE? Является ли оператор return считаться непосредственным контекстом сигнатуры функции?
Ничто в проекте N3690, похоже, не требует этого. По умолчанию, я думаю, SFINAE не применяется.
Это кажется неудачным, потому что вы можете написать функцию для перехода к другой функции, но вы не можете сделать ее существование условным для делегата, как при написании longhand. Кроме того, проверка существования однонаправленной функции-члена не может быть выполнена без decltype(auto), потому что this не может использоваться в сигнатуре функции. Однако это указывает на фундаментальную проблему, так как decltype(auto) предоставляет путь к рассмотрению типа класса как завершенного в членной сигнатуре, где это не так.
Было ли написано предложение или была ли формально проанализирована проблема?
Возможность относиться к типу класса как к полному в членной сигнатуре может иметь другие последствия... но это просто корм для другого вопроса.