这是我的功能模板:
template <typename T>
void f(vector<T> &a) noexcept(noexcept( /* ??? */ ))
我想指定此函数不会抛出异常,因为=
的赋值运算符T
具有noexcept
规范。有没有办法做到这一点?
答案 0 :(得分:2)
你可以这样做:
template<typename T>
void f(std::vector<T>& a) noexcept(std::is_nothrow_copy_assignable<T>::value)
{...}
如果复制分配noexcept
值本身已声明为T
,则会在noexcept
上设置条件。您可以进一步考虑移动分配T
。