Referring to http://en.wikipedia.org/wiki/Copy_elision
I run below code:
#include
struct C {
C() {}
C(const C&) { std::cout
Copy & Move constructor while throwing user-defined type object
struct demo
{
demo() = default;
demo(demo &&) = delete;
demo(const demo &) = delete;
};
int main()
{
throw demo{};
return 0;
}
error: call to deleted constructor of 'demo'
throw demo{};
^~~~~~
note: 'demo' has been explicitly marked deleted here
demo(demo &&) = delete;
^
1 error generated.
compiler exit status 1
From: 7 best practices for exception handling in C++