一些c++资源

Date: 2019/12/11 Tags: c++



template programing example

namespace detail {

        template<typename B, typename T>
        struct Clearer {
            T& self;
            Clearer(T& self) : self(self) {}
            ~Clearer() {
                clear(self);
            }

            void clear(std::true_type) { static_cast<B&>(self).clear();  }

            void clear(std::false_type) {} 

            void clear()  {
                clear(std::is_base_of<B, T>{});
            }
        };
}