由于某些原因,我一直认为演绎指南必须与noexcept
它们所引用的构造函数具有相同的特性。例如:
template<typename T>
struct clazz {
clazz(const T &) noexcept {}
};
clazz(const char &) noexcept -> clazz<int>;
也就是说,如果构造函数是noexcept
并且我希望它也是 for const char &
,我也必须将说明noexcept
符添加到推导指南中。
今天我和ICC做了一点工作,发现它noexcept
在扣除指南上有问题。到目前为止,一切都很好。我认为这是编译器的错误,仅此而已。
但是,我查看了标准,找不到任何可以证实我最初假设的点。正因为如此,我对 clang 进行了同样的检查,即使它没有问题,似乎noexcept
在 100% 的情况下,扣除指南上的内容都会被忽略。另一方面,构造函数上的那个会影响两者。
所以,我的问题是,它是否有任何意义或者是否需要在某种程度上传播(如果这有道理的话)构造函数的-ness 也适用于演绎指南,或者它是无用的noexcept
,我可以摆脱所有noexcept
扣除指南?