Generally I'd stick to C++14 features but test and consider C++17 library features as those are usually much more stable. Around the C++20 timeframe C++17 should be fully stable.
We’ve had good success with c++17 starting with an “blank buffer” application about a year ago. The code is clearer and so has fewer bugs. It helped that starting from zero allowed us to enable almost every compiler warning in g++ and clang++.
The bigger problem is interfacing with third party code that has to work with everything back to c+03. I don’t envy those folks in their task!
Don't go too far, or you'll get...
auto i = { 1 };
Re:C++17 Compiler Bug Hunt
by loup-vaillant on Friday April 06, 2018 @10:22AM
(#16773419)
Wait, is that an integer, or an array? Serious question, with initialiser lists I'm not sure any more.
auto i = {5};
is a std::initializer_list<int>, whereas auto i{5};
is an int (as of C++17): https://godbolt.org/g/eXXN3oSee also https://stackoverflow.com/questions/25612262/why-does-auto-x... .
If you change the compiler version (to e.g. gcc7) your blurb compiles in C++14.
This is not to say that compiler developers do a bad job; however, don't expect complex language revisions to be production grade from the get-go.