C++11 templates and macros for opaque/hidden private implementations (PIMPL).