Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <memory>
- // using std::unique_ptr, std::pointer_traits
- template<class Pointer>
- class FooBase
- {
- Pointer _m;
- public:
- using pointer = Pointer;
- using element_type = typename std::pointer_traits<pointer>::element_type;
- using reference = element_type&;
- using const_reference = const element_type&;
- explicit FooBase(reference ref)
- : _m(&ref)
- {}
- reference get()
- { return *_m; }
- const_reference get() const
- { return *_m; }
- };
- class Bar;
- using Foo = FooBase<Bar*>;
- using OwningFoo = FooBase<std::unique_ptr<Bar> >;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement