QCOR
qcor_pimpl_impl.hpp
1 #pragma once
2 
3 #include <utility>
4 
5 namespace qcor {
6 template <typename T>
7 qcor_pimpl<T>::qcor_pimpl() : m{new T{}} {}
8 
9 template <typename T>
10 qcor_pimpl<T>::qcor_pimpl(const qcor_pimpl<T>& other)
11  : m(std::make_unique<T>(other)) {}
12 
13 template <typename T>
14 template <typename... Args>
15 qcor_pimpl<T>::qcor_pimpl(Args&&... args)
16  : m{new T{std::forward<Args>(args)...}} {}
17 
18 template <typename T>
19 qcor_pimpl<T>::~qcor_pimpl() {}
20 
21 template <typename T>
22 T* qcor_pimpl<T>::operator->() {
23  return m.get();
24 }
25 template <typename T>
26 T* qcor_pimpl<T>::operator->() const {
27  return m.get();
28 }
29 
30 template <typename T>
31 T& qcor_pimpl<T>::operator*() {
32  return *m.get();
33 }
34 
35 } // namespace qcor
qcor
Definition: qcor_syntax_handler.cpp:15