rubenwardy and others have mentioned using SFML for new projects particularly instead of SDL2. I looked around for what advantages it has over SDL2. The big difference is obviously the C++ implemention. Is there some other features of SFML that stand out from SDL2? Is it just the preference for OOP? It has more built in where SDL2 needs SDL2_image, SDL2_ttf, etc.
My experience with SFML comes from OstrichRiders. It was written for SFML1.x. When I tried to compile it with SFML2 it didn't compile. The programmer decided that he didn't like his naming convention for function names so he changed them all. Updating the code mostly involved changing every reference to SFML functions. That make me distrust a library. SDL2 broke backward compatibility because the old API couldn't support new hardware. They change only what was needed. SFML seems to have decided to head in a different direction "breaking changes should be able to happen more frequently and within a manageable scope" link. I understand the reasoning but it isn't what I want from a library. The library is supposed to reduce my work not cause something to break regularly.
(If someone can explain this from the C++ standard update please do. "Remove component-wise overloads in favor of initializer lists: setPosition(x,y) -> setPosition({x,y})" I do not understand why you would want to do this. I don't know why "setPosition({x,y})" would be advantageous.)