void bullet_three_four_tests() { { typedef TestClass Fn; Fn cl(42); test_b34<int&>(cl); test_b34<int const&>(static_cast<Fn const&>(cl)); test_b34<int volatile&>(static_cast<Fn volatile&>(cl)); test_b34<int const volatile&>(static_cast<Fn const volatile &>(cl)); test_b34<int&&>(static_cast<Fn &&>(cl)); test_b34<int const&&>(static_cast<Fn const&&>(cl)); test_b34<int volatile&&>(static_cast<Fn volatile&&>(cl)); test_b34<int const volatile&&>(static_cast<Fn const volatile&&>(cl)); } { typedef DerivedFromTestClass Fn; Fn cl(42); test_b34<int&>(cl); test_b34<int const&>(static_cast<Fn const&>(cl)); test_b34<int volatile&>(static_cast<Fn volatile&>(cl)); test_b34<int const volatile&>(static_cast<Fn const volatile &>(cl)); test_b34<int&&>(static_cast<Fn &&>(cl)); test_b34<int const&&>(static_cast<Fn const&&>(cl)); test_b34<int volatile&&>(static_cast<Fn volatile&&>(cl)); test_b34<int const volatile&&>(static_cast<Fn const volatile&&>(cl)); } { typedef TestClass Fn; Fn cl_obj(42); Fn* cl = &cl_obj; test_b34<int&>(cl); test_b34<int const&>(static_cast<Fn const*>(cl)); test_b34<int volatile&>(static_cast<Fn volatile*>(cl)); test_b34<int const volatile&>(static_cast<Fn const volatile *>(cl)); } { typedef DerivedFromTestClass Fn; Fn cl_obj(42); Fn* cl = &cl_obj; test_b34<int&>(cl); test_b34<int const&>(static_cast<Fn const*>(cl)); test_b34<int volatile&>(static_cast<Fn volatile*>(cl)); test_b34<int const volatile&>(static_cast<Fn const volatile *>(cl)); } }
void bullet_one_two_tests() { { TestClass cl(42); test_b12<int&(NonCopyable&&)&, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); test_b12<int&&(NonCopyable&&) && , int&&>(std::move(cl)); test_b12<int const&&(NonCopyable&&) const &&, int const&&>(std::move(cl)); test_b12<int volatile&&(NonCopyable&&) volatile &&, int volatile&&>(std::move(cl)); test_b12<int const volatile&&(NonCopyable&&) const volatile &&, int const volatile&&>(std::move(cl)); } { DerivedFromTestClass cl(42); test_b12<int&(NonCopyable&&)&, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); //MSVC doesn't handle these correctly #if not defined(_MSC_VER) || _MSC_VER > 1900 test_b12<int&&(NonCopyable&&) && , int&&>(std::move(cl)); test_b12<int const&&(NonCopyable&&) const &&, int const&&>(std::move(cl)); test_b12<int volatile&&(NonCopyable&&) volatile &&, int volatile&&>(std::move(cl)); test_b12<int const volatile&&(NonCopyable&&) const volatile &&, int const volatile&&>(std::move(cl)); #endif } { TestClass cl_obj(42); TestClass *cl = &cl_obj; test_b12<int&(NonCopyable&&)&, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); } { DerivedFromTestClass cl_obj(42); DerivedFromTestClass *cl = &cl_obj; test_b12<int&(NonCopyable&&)&, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); } }
void bullet_one_two_tests() { { TestClass cl(42); test_b12<int&(NonCopyable&&) &, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); test_b12<int&&(NonCopyable&&) &&, int&&>(std::move(cl)); test_b12<int const&&(NonCopyable&&) const &&, int const&&>(std::move(cl)); test_b12<int volatile&&(NonCopyable&&) volatile &&, int volatile&&>(std::move(cl)); test_b12<int const volatile&&(NonCopyable&&) const volatile &&, int const volatile&&>(std::move(cl)); } { DerivedFromTestClass cl(42); test_b12<int&(NonCopyable&&) &, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); test_b12<int&&(NonCopyable&&) &&, int&&>(std::move(cl)); test_b12<int const&&(NonCopyable&&) const &&, int const&&>(std::move(cl)); test_b12<int volatile&&(NonCopyable&&) volatile &&, int volatile&&>(std::move(cl)); test_b12<int const volatile&&(NonCopyable&&) const volatile &&, int const volatile&&>(std::move(cl)); } { TestClass cl_obj(42); TestClass *cl = &cl_obj; test_b12<int&(NonCopyable&&) &, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); } { DerivedFromTestClass cl_obj(42); DerivedFromTestClass *cl = &cl_obj; test_b12<int&(NonCopyable&&) &, int&>(cl); test_b12<int const&(NonCopyable&&) const &, int const&>(cl); test_b12<int volatile&(NonCopyable&&) volatile &, int volatile&>(cl); test_b12<int const volatile&(NonCopyable&&) const volatile &, int const volatile&>(cl); } }