ANNOUNCEMENT: Live Wireshark University & Allegro Packets online APAC Wireshark Training Session
April 17th, 2024 | 14:30-16:00 SGT (UTC+8) | Online

Wireshark-dev: Re: [Wireshark-dev] Switch to C++11 or C++14

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Mon, 4 Jun 2018 11:24:26 -0700
On Jun 4, 2018, at 10:51 AM, Gerald Combs <gerald@xxxxxxxxxxxxx> wrote:

> On 6/1/18 2:37 PM, Guy Harris wrote:
> 
>> However, the problem with Ubuntu may be that the compiler in the version of Ubuntu running on the buildbot may be old enough that it doesn't *default* to C++11, so we may have to explicitly *ask* for C++11 in the CMake files.
> 
> The main and fuzz test builders run Ubuntu 16.04 and have the stock gcc (5.4.0) installed. The fuzz builder additionally has clang 5.0.2 installed from the LLVM apt repository.

So those should *support* C++11, but GCC 5.5 - and presumably earlier 5.x versions - doesn't appear to *default* to C++11; the GCC 5.5 manual section on C++ language standards supported, at

	https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/Standards.html#C_002b_002b-Language

says

	The default, if no C++ language dialect options are given, is -std=gnu++98.

i.e. C++98 with GNU extensions, so we'd have to explicitly ask for C++11 by doing -std=gnu++11 (as we want the GCC extensions, as far as I know - we, or Qt, may even expect them to be there if we're compiling with GCC).

> I'm planning on upgrading the main Ubuntu builder to 18.04 this week, which will give us gcc 7.3.0.

That defaults to C++14:

	https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Standards.html#C_002b_002b-Language

says

	The default, if no C++ language dialect options are given, is -std=gnu++14.

> The macOS builder has clang 3.1 installed, so we'd have to upgrade it before mandating C++11 or 14.

If

	https://en.wikipedia.org/wiki/Xcode#Toolchain_versions

is to be believed, Xcode prior to 4.4 has Clang 3.1 or earlier, none of which are claimed by the Clang Web site to support C++11, and Xcode 4.4 has Clang 4.0, which is claimed by the Clang Web site to support C++14.

	https://en.wikipedia.org/wiki/Xcode#4.x_series

claims that it "runs on both Mac OS X Lion (10.7) and OS X Mountain Lion (10.8)", so the buildbot OS wouldn't have to be updated.  However, 

	https://en.wikipedia.org/wiki/Xcode#Xcode_3.0_-_Xcode_4.x

claims that 4.4 doesn't have the Snow Leopard SDK, so if we're going to continue to support Snow Leopard, we'd probably have to use the Lion SDK but set the minimum deployment version to Snow Leopard.