6template <
typename T> pimpl<T>::pimpl() : m_{new T{}} {}
9template <
typename... Args>
10pimpl<T>::pimpl(Args &&...args) : m_{new T{std::forward<Args>(args)...}} {}
12template <
typename T> pimpl<T>::~pimpl() {}
14template <
typename T> T *pimpl<T>::operator->() {
return m_.get(); }
16template <
typename T> T
const *pimpl<T>::operator->()
const {
return m_.get(); }
18template <
typename T> T &pimpl<T>::operator*() {
return *m_.get(); }
20template <
typename T> T
const &pimpl<T>::operator*()
const {
return *m_.get(); }