【问题标题】:Is the exception specification part of the immediate context in SFINAE?异常规范是 SFINAE 中直接上下文的一部分吗?
【发布时间】:2018-08-29 19:03:52
【问题描述】:

这是对以下问题的跟进:SFINAE in variadic constructor

我写了一些代码比如

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

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

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

【问题讨论】:

标签: c++ language-lawyer sfinae noexcept


【解决方案1】:

正如 T.C. 指出的那样。在comment,没有。每[temp.deduct]/7:

[ 注意:异常规范中的等效替换是 仅在 noexcept-specifier 被实例化时完成,此时 如果替换导致一个程序是非良构的 无效的类型或表达式。 — 尾注 ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2023-04-05
    • 2022-01-20
    • 1970-01-01
    • 2017-10-08
    • 2022-09-27
    • 2013-02-22
    相关资源
    最近更新 更多