如何查明函数模板中的赋值操作符T是否抛出异常
How to find out whether an assignment operator of T in a function template throws an exception?
下面是我的函数模板:
template <typename T>
void f(vector<T> &a) noexcept(noexcept( /* ??? */ ))
我想指定如果赋值运算符T
的=
具有noexcept
规范,该函数不会抛出异常。有办法做到这一点吗?
你可以这样做:
template<typename T>
void f(std::vector<T>& a) noexcept(std::is_nothrow_copy_assignable<T>::value)
{...}
如果复制分配的T
值本身声明为noexcept
,则在noexcept
上放置一个条件。您可以进一步考虑移动分配T
。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- 函数如何通知用户它基于函数原型抛出异常?
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- VisualStudios 会抛出异常,而代码块不会 [C++]
- 如果不包含 pthread,为什么 GCC 的线程标准库实现会抛出异常?
- ZMQ::send() 抛出异常并终止 QNX 进程.为什么以及如何从中恢复?
- new(std::nothrow) int[n] 抛出异常
- 是否可以对构造函数抛出异常的对象进行异常处理,该对象的异常处理接近其基于堆栈的代码创建
- 抛出异常后,对象内分配的指针是否自动解除分配
- X 的错误处理程序抛出异常是否安全?
- boost::packaged_task生成的future是否抛出错误的异常
- 在clCreateContext()中注册的回调中用C++抛出异常是否安全
- c++标准是否允许添加两个整数(基本类型int)来抛出c++异常?
- 检查所有c++函数是否在一个程序中抛出异常的工具
- c++断言函数,检查是否抛出异常
- 如果构造函数抛出异常,那么拥有该类的全局对象是否有意义?
- C++:抛出异常,是否使用"new"?
- 通过引用抛出异常对象是否合适?
- 抛出异常是否影响errno或设置最后错误码
- 如何查明函数模板中的赋值操作符T是否抛出异常