SFINAE和decltype(自动)

Pot*_*ter 18 c++ decltype auto c++14

如果函数模板返回decltype(auto)(或使用其他类型说明符auto)但返回语句格式不正确,SFINAE会导致吗?return声明是否被认为是函数签名的直接上下文?

N3690草案中的任何内容似乎都不需要这样.默认情况下,我猜SFINAE不适用.

这看起来很不幸,因为你可以编写一个函数来转发给另一个函数,但是当你写一个longhand时,你不能让它的存在以委托为条件.此外,decltype(auto)由于this不能在函数签名中使用,因此无法检查是否存在对等非静态成员函数.然而,这表明存在一个基本问题,因为decltype(auto)它提供了一种在成员签名中将类类型视为完整的路径,而不是.

是否已撰写提案,或者是否已在任何地方对问题进行了正式分析?

在成员签名中将类类型视为完整的能力可能具有其他含义......但这只是另一个问题的素材.

Naw*_*waz 15

但退货声明将是不正确的,SFINAE会导致吗?

提案-n3638说,

SFINAE

由于返回类型是通过实例化模板推断出来的,如果实例化不正确,则会导致错误而不是替换失败.这允许自动函数返回lambda,这是使用decltype(返回表达式)模式无法实现的.

希望这就是你要找的东西.