听说noexcept
将成为C++ 17中的功能类型的一部分的一部分。这会有什么不同?这是否意味着我们必须在我们的模板中区分noexcept
和非noexcept
函数和成员函数(这将使我们必须编写的样板代码的数量翻倍)?noexcept成为类型系统
例如,对于当前的模板匹配函数指针:
template<typename R, typename... Args>
struct Foo<R (*)(Args...)> {};
我们将需要额外的:
template<typename R, typename... Args>
struct Foo<R (*)(Args...) noexcept> {};
而这仅仅是良好的旧功能。对于成员函数,我们有const
,volatile
和ref-qualifiers,这会产生巨大的组合负载。随着noexcept
的加入,它会变差两倍。
在哪个模板?举一个你觉得需要改变的代码的例子。 –
@NicolBolas查看更新。 –
“*对于成员函数,我们已经有const,volatile和ref-qualifiers,产生了巨大的组合负载。*”有人真的*使用* volatile用于他们的CV限定符吗?多久你需要采用一个'&'或'&&'类型的成员指针? –