From 3985bf4b19631b2926bf402489f862614d6651a5 Mon Sep 17 00:00:00 2001 From: Florent Rougon <f.rougon@free.fr> Date: Fri, 8 Dec 2017 18:39:27 +0100 Subject: [PATCH] Fix compilation error in src/Add-ons/AddonVersion.cxx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should fix the following compilation error and other similar ones: converting to ‘std::tuple<flightgear::AddonVersionSuffixPrereleaseType, int, bool, int>’ from initializer list would use explicit constructor ‘constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) According to <https://stackoverflow.com/a/32084829/4756009>, the change wouldn't be needed in C++14 (and it built fine with my g++) but we use C++11. --- src/Add-ons/AddonVersion.cxx | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Add-ons/AddonVersion.cxx b/src/Add-ons/AddonVersion.cxx index aa4c44d2e..ddcd82f72 100644 --- a/src/Add-ons/AddonVersion.cxx +++ b/src/Add-ons/AddonVersion.cxx @@ -168,7 +168,8 @@ AddonVersionSuffix::suffixStringToTuple(const std::string& suffix) } } - return {preReleaseType, preReleaseNum, !devNum_s.empty(), devNum}; + return std::make_tuple(preReleaseType, preReleaseNum, !devNum_s.empty(), + devNum); } else { // the regexp didn't match string msg = "invalid add-on version suffix: '" + suffix + "' " "(expected form is [{a|b|rc}N1][.devN2] where N1 and N2 are positive " @@ -181,7 +182,8 @@ AddonVersionSuffix::suffixStringToTuple(const std::string& suffix) std::tuple<AddonVersionSuffixPrereleaseType, int, bool, int> AddonVersionSuffix::makeTuple() const { - return { _preReleaseType, _preReleaseNum, _developmental, _devNum }; + return std::make_tuple(_preReleaseType, _preReleaseNum, _developmental, + _devNum); } std::tuple<int, @@ -194,11 +196,12 @@ AddonVersionSuffix::genSortKey() const // The first element means that a plain .devN is lower than everything else, // except .devM with M <= N (namely: all dev and non-dev alpha, beta, // candidates, as well as the empty suffix). - return { ((_developmental && _preReleaseType == AddonRelType::none) ? 0 : 1), - enumValue(_preReleaseType), - _preReleaseNum, - (_developmental ? 0 : 1), // e.g., 1.0.3a2.devN < 1.0.3a2 for all N - _devNum }; + return std::make_tuple( + ((_developmental && _preReleaseType == AddonRelType::none) ? 0 : 1), + enumValue(_preReleaseType), + _preReleaseNum, + (_developmental ? 0 : 1), // e.g., 1.0.3a2.devN < 1.0.3a2 for all N + _devNum); } bool operator==(const AddonVersionSuffix& lhs, const AddonVersionSuffix& rhs) @@ -272,7 +275,8 @@ AddonVersion::versionStringToTuple(const std::string& versionStr) int minor = strutils::readNonNegativeInt<int>(minorNumber_s); int patchLevel = strutils::readNonNegativeInt<int>(patchLevel_s); - return {major, minor, patchLevel, AddonVersionSuffix(suffix_s)}; + return std::make_tuple(major, minor, patchLevel, + AddonVersionSuffix(suffix_s)); } else { // the regexp didn't match string msg = "invalid add-on version number: '" + versionStr + "' " "(expected form is MAJOR.MINOR.PATCHLEVEL[{a|b|rc}N1][.devN2] where " @@ -297,7 +301,9 @@ std::string AddonVersion::suffixStr() const { return suffix().str(); } std::tuple<int, int, int, AddonVersionSuffix> AddonVersion::makeTuple() const -{ return {majorNumber(), minorNumber(), patchLevel(), suffix()}; } +{ + return std::make_tuple(majorNumber(), minorNumber(), patchLevel(), suffix()); +} string AddonVersion::str() const {