What incompatibilities are you running into between C++11 and C++14? I know that GCC's C++11 introduced a new ABI that's not backwards compatible, but I'd though that C++14 was relatively minor. The ABI issues can be handled by adding "-D_GLIBCXX_USE_CXX11_ABI=0" to your compiler command on distros like 14.04 that still use the old ABI; see here.Lord Estraven wrote:So just a heads up, Clang and GCC support for C++14 are both really iffy on Ubuntu 14.04 LTS, and probably also on Debian Stable. I'm guessing there are a lot of people using LTS as their main desktop; seeing as Canonical loves to break things all the time in non-LTS versions...
Anyway, from what I've read on the subject, there are subtle incompatibilities between C++11 and C++14. As such I'm not sure it's a good idea to move fully to C++14 right now. Personally, I would probably want to hold off until the next LTS version of Ubuntu.
That said, I'm not the C++ programmer here. YMMV.
Edit: on a side note, I've been reading Effective Modern C++, and it's almost enough to put me off C++ completely! It seems as though C++11/14 features introduce many, many new possibilities for undefined behavior at runtime, which can be difficult to detect while writing and compiling code.
For our C++11 work on Ubuntu 14.04 LTS, we enabled the toolchain test builds and used latest compilers and libraries from there, for full C++11/C++14 support. However, this is all on systems we control; it's probably kind of radical for a game you're distributing to others. For Clang, I think you could probably install the latest version from llvm.org's repositories for full C++14 support then distribute the binaries to people without taking further special action, but I haven't tried this.
Similarly, I'd thought that a lot of the changes in C++11 and C++14 and "modern" C++ were supposed to reduce undefined behavior. (Smart pointers are less error-prone than manual memory management, class initializers make uninitialized member variables less likely, etc.) That's been my experience, at least. I haven't read Effective Modern C++ yet, so I could easily be missing stuff.