On Wed, Jun 8, 2016 at 8:13 AM, Peter Dimov
Tom Kent wrote:
From a lot of the discussing I've seen on the lists, it seems that there's a lot of work going into C++ 11/14/1z development. I was thinking it would be good to add some of those switches. Which ones? How many?
Baseline Standard -std=c++98 (I believe this is the default for all the g++/clang++ instances above) -std=c++11/0x -std=c++14/1y -std=c++1z
And now MSVC is also adding similar but different /std options.
We definitely need those. Testing a recent version of g++ (or any version of clang) in its default 98 mode isn't very useful. We need c++11 at the very minimum because without it half of the code isn't tested.
+1 ISTM we are at the point where c++11 should be the default for gcc & clang, and we spend ever less testing and development resources on c++98 for those compilers. Likewise with MSVC we concentrate resources on more recent release.
On the other hand, testing all compilers in all modes would be impractical. Some sort of a compromise needs to be struck, but I'm not sure how.
Maybe divide the world into rapid, default, and legacy. Currently, rapid == latest, default == c++11, and legacy == c++98 and older compilers. Rapid runs as often as possible, default runs daily, legacy into three groups cycling every third day. Or something similar. Incidentally, I see rapid as only a stopgap until we have a real continuous integration mechanism in place --Beman