mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-16 00:51:56 -05:00
30 lines
600 B
C++
30 lines
600 B
C++
|
#ifndef PIMPL_H_HPP_
|
||
|
#define PIMPL_H_HPP_
|
||
|
|
||
|
#include <memory>
|
||
|
|
||
|
//
|
||
|
// opaque implementation type with perfect forwarding of constructor arguments
|
||
|
//
|
||
|
// see pimpl_impl.hpp for the out-of-line definitions of the members and lifetime management
|
||
|
//
|
||
|
// thanks to Herb Sutter (http://herbsutter.com/gotw/_101/) for the implementation
|
||
|
//
|
||
|
template<typename T>
|
||
|
class pimpl
|
||
|
{
|
||
|
private:
|
||
|
std::unique_ptr<T> m_;
|
||
|
|
||
|
public:
|
||
|
pimpl ();
|
||
|
template<typename ...Args> pimpl (Args&& ...);
|
||
|
~pimpl ();
|
||
|
T * operator -> ();
|
||
|
T const * operator -> () const;
|
||
|
T& operator * ();
|
||
|
T const& operator * () const;
|
||
|
};
|
||
|
|
||
|
#endif
|