是 SFINAE 中直接上下文的异常规范部分

Is the exception specification part of the immediate context in SFINAE?

本文关键字:异常 范部 上下文 SFINAE      更新时间:2023-10-16

这是以下问题的后续:可变参数构造函数中的SFINAE

我写了一些代码,例如

template<typename... Args>
StrongAlias(Args&&... args) noexcept(noexcept(T(std::declval<Args>()...)))
    : value(std::forward<Args>(args)...) {}

在无法从参数类型构造T的情况下,将禁用StrongAlias构造函数,但另一个用户告诉我这不起作用,因为异常规范不是直接上下文的一部分。

异常规范不是直接上下文的一部分吗?我不明白为什么会这样。

正如T.C.在评论中指出的那样,没有。 每 [温度扣除]/7:

[ 注意:例外规范中的等效替换为 仅在实例化 noexcept-specifier 时完成,此时 点程序格式不正确,如果替换导致 无效的类型或表达式。 — 尾注 ]