├── .gitignore ├── LICENSE ├── README.md ├── code ├── .bazelrc ├── WORKSPACE ├── crtp │ ├── BUILD │ ├── linked_list.hpp │ ├── linked_list_unittest.cpp │ ├── object_counter.hpp │ ├── object_counter_test.cpp │ └── static_poly.cpp ├── ebco │ ├── BUILD │ ├── compressed_tuple1.cpp │ ├── compressed_tuple2.cpp │ ├── ebco_fail.cpp │ ├── ebco_success.cpp │ ├── empty_class.cpp │ ├── tuple.hpp │ ├── tuple_element1.hpp │ ├── tuple_element2.hpp │ ├── tuple_main.cpp │ ├── tuple_storage1.hpp │ └── tuple_storage2.hpp ├── mixin │ ├── BUILD │ ├── mp_throw.hpp │ ├── mp_throw_test.cpp │ ├── nested_exception.cpp │ └── point_example.cpp ├── pimpl │ ├── BUILD │ ├── basic_info.cpp │ ├── basic_info.hpp │ ├── main.cpp │ ├── person.cpp │ └── person.hpp ├── scoped_locking │ ├── BUILD │ ├── scoped_lock.hpp │ └── scoped_lock_test.cpp ├── type_erasure │ ├── BUILD │ ├── any.hpp │ ├── any_example.cpp │ ├── any_test.cpp │ ├── forupto1.cpp │ ├── forupto2.cpp │ ├── forupto3.cpp │ ├── forupto4.cpp │ ├── function.cpp │ ├── function_ptr.hpp │ ├── functor_bridge.hpp │ ├── is_equality_comparable.hpp │ ├── specific_functor_bridge.hpp │ └── try_equals.hpp └── utils │ ├── BUILD │ └── macros.hpp └── docs ├── crtp.md ├── ebco.md ├── mixin.md ├── pimpl.md ├── scoped_locking.md └── type_erasure.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/README.md -------------------------------------------------------------------------------- /code/.bazelrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/.bazelrc -------------------------------------------------------------------------------- /code/WORKSPACE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/WORKSPACE -------------------------------------------------------------------------------- /code/crtp/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/BUILD -------------------------------------------------------------------------------- /code/crtp/linked_list.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/linked_list.hpp -------------------------------------------------------------------------------- /code/crtp/linked_list_unittest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/linked_list_unittest.cpp -------------------------------------------------------------------------------- /code/crtp/object_counter.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/object_counter.hpp -------------------------------------------------------------------------------- /code/crtp/object_counter_test.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/object_counter_test.cpp -------------------------------------------------------------------------------- /code/crtp/static_poly.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/crtp/static_poly.cpp -------------------------------------------------------------------------------- /code/ebco/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/BUILD -------------------------------------------------------------------------------- /code/ebco/compressed_tuple1.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/compressed_tuple1.cpp -------------------------------------------------------------------------------- /code/ebco/compressed_tuple2.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/compressed_tuple2.cpp -------------------------------------------------------------------------------- /code/ebco/ebco_fail.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/ebco_fail.cpp -------------------------------------------------------------------------------- /code/ebco/ebco_success.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/ebco_success.cpp -------------------------------------------------------------------------------- /code/ebco/empty_class.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/empty_class.cpp -------------------------------------------------------------------------------- /code/ebco/tuple.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple.hpp -------------------------------------------------------------------------------- /code/ebco/tuple_element1.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple_element1.hpp -------------------------------------------------------------------------------- /code/ebco/tuple_element2.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple_element2.hpp -------------------------------------------------------------------------------- /code/ebco/tuple_main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple_main.cpp -------------------------------------------------------------------------------- /code/ebco/tuple_storage1.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple_storage1.hpp -------------------------------------------------------------------------------- /code/ebco/tuple_storage2.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/ebco/tuple_storage2.hpp -------------------------------------------------------------------------------- /code/mixin/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/mixin/BUILD -------------------------------------------------------------------------------- /code/mixin/mp_throw.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/mixin/mp_throw.hpp -------------------------------------------------------------------------------- /code/mixin/mp_throw_test.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/mixin/mp_throw_test.cpp -------------------------------------------------------------------------------- /code/mixin/nested_exception.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/mixin/nested_exception.cpp -------------------------------------------------------------------------------- /code/mixin/point_example.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/mixin/point_example.cpp -------------------------------------------------------------------------------- /code/pimpl/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/BUILD -------------------------------------------------------------------------------- /code/pimpl/basic_info.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/basic_info.cpp -------------------------------------------------------------------------------- /code/pimpl/basic_info.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/basic_info.hpp -------------------------------------------------------------------------------- /code/pimpl/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/main.cpp -------------------------------------------------------------------------------- /code/pimpl/person.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/person.cpp -------------------------------------------------------------------------------- /code/pimpl/person.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/pimpl/person.hpp -------------------------------------------------------------------------------- /code/scoped_locking/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/scoped_locking/BUILD -------------------------------------------------------------------------------- /code/scoped_locking/scoped_lock.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/scoped_locking/scoped_lock.hpp -------------------------------------------------------------------------------- /code/scoped_locking/scoped_lock_test.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/scoped_locking/scoped_lock_test.cpp -------------------------------------------------------------------------------- /code/type_erasure/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/BUILD -------------------------------------------------------------------------------- /code/type_erasure/any.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/any.hpp -------------------------------------------------------------------------------- /code/type_erasure/any_example.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/any_example.cpp -------------------------------------------------------------------------------- /code/type_erasure/any_test.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/any_test.cpp -------------------------------------------------------------------------------- /code/type_erasure/forupto1.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/forupto1.cpp -------------------------------------------------------------------------------- /code/type_erasure/forupto2.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/forupto2.cpp -------------------------------------------------------------------------------- /code/type_erasure/forupto3.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/forupto3.cpp -------------------------------------------------------------------------------- /code/type_erasure/forupto4.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/forupto4.cpp -------------------------------------------------------------------------------- /code/type_erasure/function.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() { return 0; } -------------------------------------------------------------------------------- /code/type_erasure/function_ptr.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/function_ptr.hpp -------------------------------------------------------------------------------- /code/type_erasure/functor_bridge.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/functor_bridge.hpp -------------------------------------------------------------------------------- /code/type_erasure/is_equality_comparable.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/is_equality_comparable.hpp -------------------------------------------------------------------------------- /code/type_erasure/specific_functor_bridge.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/specific_functor_bridge.hpp -------------------------------------------------------------------------------- /code/type_erasure/try_equals.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/type_erasure/try_equals.hpp -------------------------------------------------------------------------------- /code/utils/BUILD: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/utils/BUILD -------------------------------------------------------------------------------- /code/utils/macros.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/code/utils/macros.hpp -------------------------------------------------------------------------------- /docs/crtp.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/crtp.md -------------------------------------------------------------------------------- /docs/ebco.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/ebco.md -------------------------------------------------------------------------------- /docs/mixin.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/mixin.md -------------------------------------------------------------------------------- /docs/pimpl.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/pimpl.md -------------------------------------------------------------------------------- /docs/scoped_locking.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/scoped_locking.md -------------------------------------------------------------------------------- /docs/type_erasure.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/liuzengh/CppIdioms/HEAD/docs/type_erasure.md --------------------------------------------------------------------------------