【发布时间】:2019-02-14 21:44:10
【问题描述】:
根据is_destructible (http://eel.is/c++draft/meta.unary.prop#lib:is_destructible) 的定义,is_destructible_v<T> 是true 当:
T是一个引用类型,或者T是一个完整的对象类型,表达式declval<U&>().~U()在被视为未计算的操作数时是格式正确的,其中U是remove_all_extents_t<T>。
为什么它使用declval<U&>().~U()而不是declval<U>().~U()?
https://cplusplus.github.io/LWG/issue2049 中添加了declval 的措辞,以解决定义与抽象类型有关的问题。也许作者认为declval<U> 有返回类型U 所以它不适用于抽象类型?
【问题讨论】:
-
在这一点上,看起来唯一的选择就是问问 Daniel Krugler :)
-
一个引用可以限定析构函数吗?
~U()&& {stuff}? -
@MooingDuck no.
标签: c++ language-lawyer typetraits