Die*_* Rz 1 c++ exception copy-constructor move-constructor c++11
我有一个CustomException实现的类,std::exception其中我明确地删除了副本并移动构造函数.当我抛出该类的异常时,编译错误以调用已删除的构造函数.
是否在某处创建了CustomException实例?抛出异常时会创建哪些对象?
抛出时,构造一个异常对象,其类型throw与删除了顶级cv-qualifiers 的操作数相同(如果抛出数组或函数,它们也会衰减到相应的指针).
所以你做的是禁止,我害怕.
C++标准章节[except.throw]§5:
当抛出的对象是类对象时,即使复制/移动操作被省略,也应该可以访问复制/移动构造函数和析构函数(12.8).