From f44e59ec392013fb1af08a1302356ad76d0c98f3 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Tue, 14 Nov 2023 10:13:40 -0500 Subject: [PATCH 1/2] remove `=delete` of default ctor to fix C++20 error --- .../c++/six/source/NITFHeaderCreator.cpp | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/six/modules/c++/six/source/NITFHeaderCreator.cpp b/six/modules/c++/six/source/NITFHeaderCreator.cpp index ede76474f..d13b5d6ff 100644 --- a/six/modules/c++/six/source/NITFHeaderCreator.cpp +++ b/six/modules/c++/six/source/NITFHeaderCreator.cpp @@ -257,31 +257,36 @@ struct SecurityParameterSetter final getField().set(p.str()); } } - SecurityParameterSetter() = delete; SecurityParameterSetter& operator=(const SecurityParameterSetter&) = delete; + #if _MSC_VER + // doing `= delete` for the default constructor causes the line below not to compile w/C++20 + #pragma warning(disable: 4623) // '...': default constructor was implicitly defined as deleted + #endif }; void NITFHeaderCreator::setSecurity(const six::Classification& classification, nitf::FileSecurity security, const std::string& prefix) { - const SecurityParameterSetter setSecurityParameter{ prefix, classification.fileOptions }; - setSecurityParameter(NITFImageInfo::CLSY, [&]() { return security.getClassificationSystem(); }); - setSecurityParameter(NITFImageInfo::CLSY, [&]() { return security.getClassificationSystem(); }); - setSecurityParameter(NITFImageInfo::CODE, [&]() { return security.getCodewords(); }); - setSecurityParameter(NITFImageInfo::CTLH, [&]() { return security.getControlAndHandling(); }); - setSecurityParameter(NITFImageInfo::REL, [&]() { return security.getReleasingInstructions(); }); - setSecurityParameter(NITFImageInfo::DCTP, [&]() { return security.getDeclassificationType(); }); - setSecurityParameter(NITFImageInfo::DCDT, [&]() { return security.getDeclassificationDate(); }); - setSecurityParameter(NITFImageInfo::DCXM, [&]() { return security.getDeclassificationExemption(); }); - setSecurityParameter(NITFImageInfo::DG, [&]() { return security.getDowngrade(); }); - setSecurityParameter(NITFImageInfo::DGDT, [&]() { return security.getDowngradeDateTime(); }); - setSecurityParameter(NITFImageInfo::CLTX, [&]() { return security.getClassificationText(); }); - setSecurityParameter(NITFImageInfo::CATP, [&]() { return security.getClassificationAuthorityType(); }); - setSecurityParameter(NITFImageInfo::CAUT, [&]() { return security.getClassificationAuthority(); }); - setSecurityParameter(NITFImageInfo::CRSN, [&]() { return security.getClassificationReason(); }); - setSecurityParameter(NITFImageInfo::SRDT, [&]() { return security.getSecuritySourceDate(); }); - setSecurityParameter(NITFImageInfo::CTLN, [&]() { return security.getSecurityControlNumber(); }); + const SecurityParameterSetter setSecurityParameter_{ prefix, classification.fileOptions }; + #define setSecurityParameter(code_, getter_) \ + setSecurityParameter_(NITFImageInfo::code_, [&]() { return security.get ## getter_(); }) + setSecurityParameter(CLSY, ClassificationSystem); + setSecurityParameter(CODE, Codewords); + setSecurityParameter(CTLH, ControlAndHandling); + setSecurityParameter(REL, ReleasingInstructions); + setSecurityParameter(DCTP, DeclassificationType); + setSecurityParameter(DCDT, DeclassificationDate); + setSecurityParameter(DCXM, DeclassificationExemption); + setSecurityParameter(DG, Downgrade); + setSecurityParameter(DGDT, DowngradeDateTime); + setSecurityParameter(CLTX, ClassificationText); + setSecurityParameter(CATP, ClassificationAuthorityType); + setSecurityParameter(CAUT, ClassificationAuthority); + setSecurityParameter(CRSN, ClassificationReason); + setSecurityParameter(SRDT, SecuritySourceDate); + setSecurityParameter(CTLN, SecurityControlNumber); + #undef setSecurityParameter // Now, do some specific overrides if (security.getClassificationSystem().toString().empty()) From 2adf5ae48af934dccf0a3d2b5b1e69b784cf2590 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Tue, 14 Nov 2023 11:12:15 -0500 Subject: [PATCH 2/2] use our own six::toString() rather than str::toString() --- six/modules/c++/six/source/XmlLite.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/six/modules/c++/six/source/XmlLite.cpp b/six/modules/c++/six/source/XmlLite.cpp index c483c21e5..250ff7b9c 100644 --- a/six/modules/c++/six/source/XmlLite.cpp +++ b/six/modules/c++/six/source/XmlLite.cpp @@ -181,7 +181,7 @@ static std::string toString(const xml::lite::QName& name, const T& p, const xml: { try { - return str::toString(p); + return six::toString(p); } catch (const except::Exception& ex) {