C++ portability guide