JS8Call-Improved master
Loading...
Searching...
No Matches
pimpl_h.h
1#ifndef PIMPL_H_HPP_
2#define PIMPL_H_HPP_
3
4#include <memory>
5
6//
7// opaque implementation type with perfect forwarding of constructor arguments
8//
9// see pimpl_impl.h for the out-of-line definitions of the members and lifetime
10// management
11//
12// thanks to Herb Sutter (http://herbsutter.com/gotw/_101/) for the
13// implementation
14//
15
16template <typename T> class pimpl {
17 private:
18 std::unique_ptr<T> m_;
19
20 public:
21 pimpl();
22 template <typename... Args> pimpl(Args &&...);
23 ~pimpl();
24 T *operator->();
25 T const *operator->() const;
26 T &operator*();
27 T const &operator*() const;
28};
29
30#endif