| 26 | }; |
| 27 | |
| 28 | class BigTask { |
| 29 | public: |
| 30 | BigTask() { |
| 31 | cout<<"BigTask: construct"<<endl; |
| 32 | } |
| 33 | BigTask(const BigTask&) { |
| 34 | cout<<"BigTask: copy construct"<<endl; |
| 35 | } |
| 36 | BigTask(BigTask&&) { |
| 37 | cout<<"BigTask: move construct"<<endl; |
| 38 | } |
| 39 | ~BigTask() { |
| 40 | cout<<"BigTask: distruct"<<endl; |
| 41 | } |
| 42 | void operator()() { |
| 43 | cout<<"BigTask: run"<<endl; |
| 44 | } |
| 45 | private: |
| 46 | char a[64]; |
| 47 | }; |
| 48 | |
| 49 | template <typename T> |
| 50 | void safe_exec(T& e) { |