int main(int argc, char **argv) { string_test(); printf("1111111111111\n"); expr_test(); printf("1111111111111\n"); macro_test(); scope_test(); forward_test(); funcptr_test(); loop_test(); switch_test(); goto_test(); enum_test(); typedef_test(); struct_test(); array_test(); expr_ptr_test(); bool_test(); expr2_test(); constant_expr_test(); expr_cmp_test(); char_short_test(); init_test(); compound_literal_test(); kr_test(); struct_assign_test(); cast_test(); bitfield_test(); c99_bool_test(); float_test(); longlong_test(); manyarg_test(); stdarg_test(); whitespace_test(); relocation_test(); old_style_function(); alloca_test(); sizeof_test(); typeof_test(); statement_expr_test(); local_label_test(); asm_test(); builtin_test(); return 0; }
int main() { try { std::shared_ptr<Base> p = std::make_shared<Derived>(); std::cout << "Created a shared Derived (as a pointer to Base)\n" << " p.get() = " << p.get() << ", p.use_count() = " << p.use_count() << '\n'; std::thread t1(thr, p), t2(thr, p), t3(thr, p); //if detatch ownership we can no longer use Base pointer //afeter threads end //p.reset(); // release ownership from main std::cout << "Shared ownership between 3 threads and released\n" << "ownership from main:\n" << " p.get() = " << p.get() << ", p.use_count() = " << p.use_count() << '\n'; t1.join(); t2.join(); t3.join(); std::cout << "All threads completed, the last one deleted Derived\n"; std::cout << "end of scope (1)" << std::endl; scope_test(p); std::cout << "end of scope (2)" << std::endl; } catch(std::exception &e) { std::cout << "Error = "<< e.what() << std::endl; } }