You stick to the C++ standard. However, this way you do not reach far because most interesting things like memory-mapped files or network servers are not included in the standard. So, if you cannot stick to the standard, you use cross-platform libraries like Boost.
Developing a cross-platform application in C++ is often harder than developing a C++ library because an application often requires a graphical user interface these days, and this is not included in the C++ standard either. In this case, using Qt is the most viable cross-platform approach as far as I have understood.
Developing a cross-platform library in C++ is not much easier either because different C++ compilers are not producing binary compatible code, even if on the same platform, and this produces problems to no end. The best approach for developing a cross-platform and reusable library in C++ is to create a pure C interface for it.