Celero
Pimpl.h
1 #pragma once
2 
20 
21 #include <celero/Export.h>
22 #include <memory>
23 
24 namespace celero
25 {
35  template <typename T>
36  class Pimpl
37  {
38  public:
39  Pimpl();
40 
41  // template<typename ...Args> Pimpl( Args&& ... );
42  template <typename Arg1>
43  Pimpl(Arg1&&);
44  template <typename Arg1, typename Arg2>
45  Pimpl(Arg1&&, Arg2&&);
46  template <typename Arg1, typename Arg2, typename Arg3>
47  Pimpl(Arg1&&, Arg2&&, Arg3&&);
48  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
49  Pimpl(Arg1&&, Arg2&&, Arg3&&, Arg4&&);
50  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
51  Pimpl(Arg1&&, Arg2&&, Arg3&&, Arg4&&, Arg5&&);
52  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
53  Pimpl(Arg1&&, Arg2&&, Arg3&&, Arg4&&, Arg5&&, Arg6&&);
54  ~Pimpl();
55 
56  T* operator->();
57  const T* operator->() const;
58  T& operator*();
59 
60  private:
61  std::unique_ptr<T> _pimpl;
62  };
63 } // namespace celero
64 
Definition: Archive.h:25
Definition: Pimpl.h:36