From 3f26d719bfccf7566cfd80343c8b48bfc731f7ff Mon Sep 17 00:00:00 2001 From: Imdad Sardharwalla <imdad.sardharwalla@autodesk.com> Date: Thu, 20 May 2021 22:55:06 +0100 Subject: [PATCH] REFORM-1096 Fixes for macOS (#50) XCode10 lacks support for several C++17 standard library features. Hence, for macOS, std::size() has been replaced with calls to sizeof(), and std::map::try_emplace() has been replaced with calls to std::map::emplace(). --- Test/TestArgs.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Test/TestArgs.cc b/Test/TestArgs.cc index c337c11..04be492 100755 --- a/Test/TestArgs.cc +++ b/Test/TestArgs.cc @@ -174,8 +174,13 @@ void Parser::add_option(Option& _option) OPTION_THROW_if(help_option(_option.name()), _option.name() << " cannot override -h or --help."); +#ifdef __APPLE__ + OPTION_THROW_if(!options_.emplace(_option.name(), _option).second, + _option.name() << " has already been added to the argument parser."); +#else // __APPLE__ OPTION_THROW_if(!options_.try_emplace(_option.name(), _option).second, _option.name() << " has already been added to the argument parser."); +#endif // __APPLE__ } void Parser::parse() @@ -349,7 +354,13 @@ Checksum::Level ChecksumLevel::parse_level(const std::string& _arg) // Make _arg uppercase auto arg = to_upper(_arg); - size_t num_levels = std::size(Checksum::LEVEL_TEXT); +#ifdef __APPLE__ + const size_t num_levels = + sizeof(Checksum::LEVEL_TEXT) / sizeof(Checksum::LEVEL_TEXT[0]); +#else // __APPLE__ + const size_t num_levels = std::size(Checksum::LEVEL_TEXT); +#endif // __APPLE__ + for (size_t i = 0; i < num_levels; i++) { if (arg == Checksum::LEVEL_TEXT[i]) -- GitLab