#ifndef PIMPL_IMPL_HPP_ #define PIMPL_IMPL_HPP_ #include template pimpl::pimpl() : m_{new T{}} {} template template pimpl::pimpl(Args &&...args) : m_{new T{std::forward(args)...}} {} template pimpl::~pimpl() {} template T *pimpl::operator->() { return m_.get(); } template T const *pimpl::operator->() const { return m_.get(); } template T &pimpl::operator*() { return *m_.get(); } template T const &pimpl::operator*() const { return *m_.get(); } #endif