Considering Portability
Know Your Types
Most portability issues that generate warnings are because we are not careful about our types. Standard library and arrays are indexed with size_t. Standard container sizes are reported in size_t. If you get the handling of size_t wrong, you can create subtle lurking 64-bit issues that arise only after you start to overflow the indexing of 32-bit integers. char vs unsigned char.
http://www.viva64.com/en/a/0010/
Use The Standard Library
std::filesystem
C++17 added a new filesystem library which provides portable filesystem access across all supporting compilers
std::thread
C++11's threading capabilities should be utilized over pthread or WinThreads.
Other Concerns
Most of the other concerns in this document ultimately come back to portability issues. Avoid statics is particularly of note.