如果一个函数模板返回decltype(auto)
(或另一个使用 的类型说明符auto
)但返回语句格式不正确,SFINAE 会导致结果吗?该return
语句是否被认为是函数签名的直接上下文?
N3690 草案中似乎没有任何要求。默认情况下,我猜 SFINAE 不适用。
这似乎很不幸,因为您可以编写一个函数来转发到另一个函数,但是您不能像以手写方式编写时那样使其存在以委托为条件。此外,无法检查对等非静态成员函数的存在,decltype(auto)
因为this
不能在函数签名中使用。然而,这表明了一个基本问题,因为decltype(auto)
它提供了一条路径,可以在成员签名中将类类型视为完整,而事实并非如此。
有没有写过提案,或者有没有在任何地方正式分析过问题?
在成员签名中将类类型视为完整的能力可能具有其他含义……但这只是另一个问题的素材。