Generic C++11 PIMPL implementation