moved impl to typename unit
Merge branch 'cpp_fixes' into appveyor2