lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] odd/rules_of_n ab0a3dec 3/5: Follow the Rule of Zero


From: Greg Chicares
Subject: [lmi-commits] [lmi] odd/rules_of_n ab0a3dec 3/5: Follow the Rule of Zero (initializing all data members in class)
Date: Sat, 9 Jul 2022 18:31:24 -0400 (EDT)

branch: odd/rules_of_n
commit ab0a3dec1e76cd0b319b60b2d149a5d916571d6b
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>

    Follow the Rule of Zero (initializing all data members in class)
    
    Identified by clang's '-Wdeprecated-copy-with-dtor'.
    
    Initialized all data members in the class definition: it's a good idea
    in general, and without this change, 'antediluvian_stubs.cpp' would have
    needed to duplicate the initializations, more verbosely.
---
 product_data.hpp | 393 +++++++++++++++++++++++++++----------------------------
 1 file changed, 196 insertions(+), 197 deletions(-)

diff --git a/product_data.hpp b/product_data.hpp
index 106ebd7e..0294af0d 100644
--- a/product_data.hpp
+++ b/product_data.hpp
@@ -50,7 +50,6 @@ class glossed_string final
         (std::string const& datum
         ,std::string const& gloss = std::string()
         );
-    ~glossed_string() = default;
 
     glossed_string& operator=(std::string const&);
 
@@ -144,116 +143,116 @@ class LMI_SO product_data
         ) override;
 
     // Names of files that contain other product data.
-    glossed_string DatabaseFilename;
-    glossed_string FundFilename;
-    glossed_string LingoFilename;
-    glossed_string RoundingFilename;
-    glossed_string TierFilename;
+    glossed_string DatabaseFilename           {};
+    glossed_string FundFilename               {};
+    glossed_string LingoFilename              {};
+    glossed_string RoundingFilename           {};
+    glossed_string TierFilename               {};
 
     // Names of rate-table files.
-    glossed_string CvatCorridorFilename;
-    glossed_string Irc7702NspFilename;
-    glossed_string CurrCOIFilename;
-    glossed_string GuarCOIFilename;
-    glossed_string WPFilename;
-    glossed_string ADDFilename;
-    glossed_string ChildRiderFilename;
-    glossed_string CurrSpouseRiderFilename;
-    glossed_string GuarSpouseRiderFilename;
-    glossed_string CurrTermFilename;
-    glossed_string GuarTermFilename;
-    glossed_string GroupProxyFilename;
-    glossed_string SevenPayFilename;
-    glossed_string MinPremFilename;
-    glossed_string TgtPremFilename;
-    glossed_string Irc7702QFilename;
-    glossed_string PartialMortalityFilename;
-    glossed_string SubstdTblMultFilename;
-    glossed_string CurrSpecAmtLoadFilename;
-    glossed_string GuarSpecAmtLoadFilename;
+    glossed_string CvatCorridorFilename       {};
+    glossed_string Irc7702NspFilename         {};
+    glossed_string CurrCOIFilename            {};
+    glossed_string GuarCOIFilename            {};
+    glossed_string WPFilename                 {};
+    glossed_string ADDFilename                {};
+    glossed_string ChildRiderFilename         {};
+    glossed_string CurrSpouseRiderFilename    {};
+    glossed_string GuarSpouseRiderFilename    {};
+    glossed_string CurrTermFilename           {};
+    glossed_string GuarTermFilename           {};
+    glossed_string GroupProxyFilename         {};
+    glossed_string SevenPayFilename           {};
+    glossed_string MinPremFilename            {};
+    glossed_string TgtPremFilename            {};
+    glossed_string Irc7702QFilename           {};
+    glossed_string PartialMortalityFilename   {};
+    glossed_string SubstdTblMultFilename      {};
+    glossed_string CurrSpecAmtLoadFilename    {};
+    glossed_string GuarSpecAmtLoadFilename    {};
 
     // Essential strings describing the policy and company.
-    glossed_string PolicyMktgName;
-    glossed_string PolicyLegalName;
-    glossed_string InsCoShortName;
-    glossed_string InsCoName;
-    glossed_string InsCoAddr;
-    glossed_string InsCoStreet;
-    glossed_string InsCoPhone;
-    glossed_string InsCoDomicile;
-    glossed_string MainUnderwriter;
-    glossed_string MainUnderwriterAddress;
-    glossed_string CoUnderwriter;
-    glossed_string CoUnderwriterAddress;
+    glossed_string PolicyMktgName             {};
+    glossed_string PolicyLegalName            {};
+    glossed_string InsCoShortName             {};
+    glossed_string InsCoName                  {};
+    glossed_string InsCoAddr                  {};
+    glossed_string InsCoStreet                {};
+    glossed_string InsCoPhone                 {};
+    glossed_string InsCoDomicile              {};
+    glossed_string MainUnderwriter            {};
+    glossed_string MainUnderwriterAddress     {};
+    glossed_string CoUnderwriter              {};
+    glossed_string CoUnderwriterAddress       {};
 
     // Terms defined in the contract, which must be used for column
     // headers, footnotes, etc. according to the illustration reg.
-    glossed_string AvName;
-    glossed_string CsvName;
-    glossed_string CsvHeaderName;
-    glossed_string NoLapseProvisionName;
-    glossed_string ContractName;
-    glossed_string DboName;
-    glossed_string DboNameLevel;
-    glossed_string DboNameIncreasing;
-    glossed_string DboNameReturnOfPremium;
-    glossed_string DboNameMinDeathBenefit;
-    glossed_string GenAcctName;
-    glossed_string GenAcctNameElaborated;
-    glossed_string SepAcctName;
-    glossed_string SpecAmtName;
-    glossed_string SpecAmtNameElaborated;
+    glossed_string AvName                     {};
+    glossed_string CsvName                    {};
+    glossed_string CsvHeaderName              {};
+    glossed_string NoLapseProvisionName       {};
+    glossed_string ContractName               {};
+    glossed_string DboName                    {};
+    glossed_string DboNameLevel               {};
+    glossed_string DboNameIncreasing          {};
+    glossed_string DboNameReturnOfPremium     {};
+    glossed_string DboNameMinDeathBenefit     {};
+    glossed_string GenAcctName                {};
+    glossed_string GenAcctNameElaborated      {};
+    glossed_string SepAcctName                {};
+    glossed_string SpecAmtName                {};
+    glossed_string SpecAmtNameElaborated      {};
 
     // Underwriting terms.
-    glossed_string UwBasisMedical;
-    glossed_string UwBasisParamedical;
-    glossed_string UwBasisNonmedical;
-    glossed_string UwBasisSimplified;
-    glossed_string UwBasisGuaranteed;
-    glossed_string UwClassPreferred;
-    glossed_string UwClassStandard;
-    glossed_string UwClassRated;
-    glossed_string UwClassUltra;
+    glossed_string UwBasisMedical             {};
+    glossed_string UwBasisParamedical         {};
+    glossed_string UwBasisNonmedical          {};
+    glossed_string UwBasisSimplified          {};
+    glossed_string UwBasisGuaranteed          {};
+    glossed_string UwClassPreferred           {};
+    glossed_string UwClassStandard            {};
+    glossed_string UwClassRated               {};
+    glossed_string UwClassUltra               {};
 
     // Ledger column definitions.
-    glossed_string AccountValueFootnote;
-    glossed_string AttainedAgeFootnote;
-    glossed_string CashSurrValueFootnote;
-    glossed_string DeathBenefitFootnote;
-    glossed_string InitialPremiumFootnote;
-    glossed_string NetPremiumFootnote;
-    glossed_string GrossPremiumFootnote;
-    glossed_string OutlayFootnote;
-    glossed_string PolicyYearFootnote;
+    glossed_string AccountValueFootnote       {};
+    glossed_string AttainedAgeFootnote        {};
+    glossed_string CashSurrValueFootnote      {};
+    glossed_string DeathBenefitFootnote       {};
+    glossed_string InitialPremiumFootnote     {};
+    glossed_string NetPremiumFootnote         {};
+    glossed_string GrossPremiumFootnote       {};
+    glossed_string OutlayFootnote             {};
+    glossed_string PolicyYearFootnote         {};
 
     // Terse rider names.
-    glossed_string ADDTerseName;
-    glossed_string InsurabilityTerseName;
-    glossed_string ChildTerseName;
-    glossed_string SpouseTerseName;
-    glossed_string TermTerseName;
-    glossed_string WaiverTerseName;
-    glossed_string AccelBftRiderTerseName;
-    glossed_string OverloanRiderTerseName;
+    glossed_string ADDTerseName               {};
+    glossed_string InsurabilityTerseName      {};
+    glossed_string ChildTerseName             {};
+    glossed_string SpouseTerseName            {};
+    glossed_string TermTerseName              {};
+    glossed_string WaiverTerseName            {};
+    glossed_string AccelBftRiderTerseName     {};
+    glossed_string OverloanRiderTerseName     {};
 
     // Rider footnotes.
-    glossed_string ADDFootnote;
-    glossed_string ChildFootnote;
-    glossed_string SpouseFootnote;
-    glossed_string TermFootnote;
-    glossed_string WaiverFootnote;
-    glossed_string AccelBftRiderFootnote;
-    glossed_string OverloanRiderFootnote;
+    glossed_string ADDFootnote                {};
+    glossed_string ChildFootnote              {};
+    glossed_string SpouseFootnote             {};
+    glossed_string TermFootnote               {};
+    glossed_string WaiverFootnote             {};
+    glossed_string AccelBftRiderFootnote      {};
+    glossed_string OverloanRiderFootnote      {};
 
     // Group quotes.
-    glossed_string GroupQuoteShortProductName;
-    glossed_string GroupQuoteIsNotAnOffer;
-    glossed_string GroupQuoteRidersFooter;
-    glossed_string GroupQuotePolicyFormId;
-    glossed_string GroupQuoteStateVariations;
-    glossed_string GroupQuoteProspectus;
-    glossed_string GroupQuoteUnderwriter;
-    glossed_string GroupQuoteBrokerDealer;
+    glossed_string GroupQuoteShortProductName {};
+    glossed_string GroupQuoteIsNotAnOffer     {};
+    glossed_string GroupQuoteRidersFooter     {};
+    glossed_string GroupQuotePolicyFormId     {};
+    glossed_string GroupQuoteStateVariations  {};
+    glossed_string GroupQuoteProspectus       {};
+    glossed_string GroupQuoteUnderwriter      {};
+    glossed_string GroupQuoteBrokerDealer     {};
     // Group plan type is one of:
     //   -Mandatory: no individual selection of amounts; typically,
     //     the employer pays the entire premium
@@ -262,113 +261,113 @@ class LMI_SO product_data
     //      when it complements a (separate) "mandatory" plan
     //   -Fusion: mandatory and supplemental combined; typically, the
     //      employer and employee pay their respective premiums
-    glossed_string GroupQuoteRubricMandatory;
-    glossed_string GroupQuoteRubricVoluntary;
-    glossed_string GroupQuoteRubricFusion;
-    glossed_string GroupQuoteFooterMandatory;
-    glossed_string GroupQuoteFooterVoluntary;
-    glossed_string GroupQuoteFooterFusion;
+    glossed_string GroupQuoteRubricMandatory  {};
+    glossed_string GroupQuoteRubricVoluntary  {};
+    glossed_string GroupQuoteRubricFusion     {};
+    glossed_string GroupQuoteFooterMandatory  {};
+    glossed_string GroupQuoteFooterVoluntary  {};
+    glossed_string GroupQuoteFooterFusion     {};
 
     // Premium-specific footnotes.
-    glossed_string MinimumPremiumFootnote;
-    glossed_string PremAllocationFootnote;
+    glossed_string MinimumPremiumFootnote     {};
+    glossed_string PremAllocationFootnote     {};
 
     // Miscellaneous other footnotes.
-    glossed_string InterestDisclaimer;
-    glossed_string GuarMortalityFootnote;
-    glossed_string ProductDescription;
-    glossed_string StableValueFootnote;
-    glossed_string NoVanishPremiumFootnote;
-    glossed_string RejectPremiumFootnote;
-    glossed_string ExpRatingFootnote;
-    glossed_string MortalityBlendFootnote;
-    glossed_string HypotheticalRatesFootnote;
-    glossed_string SalesLoadRefundFootnote;
-    glossed_string NoLapseEverFootnote;
-    glossed_string NoLapseFootnote;
-    glossed_string CurrentValuesFootnote;
-    glossed_string DBOption1Footnote;
-    glossed_string DBOption2Footnote;
-    glossed_string DBOption3Footnote;
-    glossed_string MinDeathBenefitFootnote;
-    glossed_string ExpRatRiskChargeFootnote;
-    glossed_string ExchangeChargeFootnote1;
-    glossed_string FlexiblePremiumFootnote;
-    glossed_string GuaranteedValuesFootnote;
-    glossed_string CreditingRateFootnote;
-    glossed_string GrossRateFootnote;
-    glossed_string NetRateFootnote;
-    glossed_string MecFootnote;
-    glossed_string GptFootnote;
-    glossed_string MidpointValuesFootnote;
-    glossed_string SinglePremiumFootnote;
-    glossed_string MonthlyChargesFootnote;
-    glossed_string UltCreditingRateFootnote;
-    glossed_string UltCreditingRateHeader;
-    glossed_string MaxNaarFootnote;
-    glossed_string PremTaxSurrChgFootnote;
-    glossed_string PolicyFeeFootnote;
-    glossed_string AssetChargeFootnote;
-    glossed_string InvestmentIncomeFootnote;
-    glossed_string IrrDbFootnote;
-    glossed_string IrrCsvFootnote;
-    glossed_string MortalityChargesFootnote;
-    glossed_string LoanAndWithdrawalFootnote;
-    glossed_string LoanFootnote;
-    glossed_string ImprimaturPresale;
-    glossed_string ImprimaturPresaleComposite;
-    glossed_string ImprimaturInforce;
-    glossed_string ImprimaturInforceComposite;
-    glossed_string StateMarketingImprimatur;
-    glossed_string NonGuaranteedFootnote;
-    glossed_string NonGuaranteedFootnote1;
-    glossed_string NonGuaranteedFootnote1Tx;
-    glossed_string FnMonthlyDeductions;
-    glossed_string SurrenderFootnote;
-    glossed_string PortabilityFootnote;
-    glossed_string FundRateFootnote;
-    glossed_string IssuingCompanyFootnote;
-    glossed_string SubsidiaryFootnote;
-    glossed_string PlacementAgentFootnote;
-    glossed_string MarketingNameFootnote;
-    glossed_string GuarIssueDisclaimerNcSc;
-    glossed_string GuarIssueDisclaimerMd;
-    glossed_string GuarIssueDisclaimerTx;
-    glossed_string IllRegCertAgent;
-    glossed_string IllRegCertAgentIl;
-    glossed_string IllRegCertAgentTx;
-    glossed_string IllRegCertClient;
-    glossed_string IllRegCertClientIl;
-    glossed_string IllRegCertClientTx;
-    glossed_string FnMaturityAge;
-    glossed_string FnPartialMortality;
-    glossed_string FnProspectus;
-    glossed_string FnInitialSpecAmt;
-    glossed_string FnInforceAcctVal;
-    glossed_string FnInforceTaxBasis;
-    glossed_string Fn1035Charge;
-    glossed_string FnMecExtraWarning;
-    glossed_string FnNotTaxAdvice;
-    glossed_string FnNotTaxAdvice2;
-    glossed_string FnImf;
-    glossed_string FnCensus;
-    glossed_string FnDacTax;
-    glossed_string FnDefnLifeIns;
-    glossed_string FnBoyEoy;
-    glossed_string FnGeneralAccount;
-    glossed_string FnPpMemorandum;
-    glossed_string FnPpAccreditedInvestor;
-    glossed_string FnPpLoads;
-    glossed_string FnProposalUnderwriting;
-    glossed_string FnGuaranteedPremium;
-    glossed_string FnOmnibusDisclaimer;
-    glossed_string FnInitialDbo;
-    glossed_string DefnGuarGenAcctRate;
-    glossed_string DefnAV;
-    glossed_string DefnCSV;
-    glossed_string DefnMec;
-    glossed_string DefnOutlay;
-    glossed_string DefnSpecAmt;
+    glossed_string InterestDisclaimer         {};
+    glossed_string GuarMortalityFootnote      {};
+    glossed_string ProductDescription         {};
+    glossed_string StableValueFootnote        {};
+    glossed_string NoVanishPremiumFootnote    {};
+    glossed_string RejectPremiumFootnote      {};
+    glossed_string ExpRatingFootnote          {};
+    glossed_string MortalityBlendFootnote     {};
+    glossed_string HypotheticalRatesFootnote  {};
+    glossed_string SalesLoadRefundFootnote    {};
+    glossed_string NoLapseEverFootnote        {};
+    glossed_string NoLapseFootnote            {};
+    glossed_string CurrentValuesFootnote      {};
+    glossed_string DBOption1Footnote          {};
+    glossed_string DBOption2Footnote          {};
+    glossed_string DBOption3Footnote          {};
+    glossed_string MinDeathBenefitFootnote    {};
+    glossed_string ExpRatRiskChargeFootnote   {};
+    glossed_string ExchangeChargeFootnote1    {};
+    glossed_string FlexiblePremiumFootnote    {};
+    glossed_string GuaranteedValuesFootnote   {};
+    glossed_string CreditingRateFootnote      {};
+    glossed_string GrossRateFootnote          {};
+    glossed_string NetRateFootnote            {};
+    glossed_string MecFootnote                {};
+    glossed_string GptFootnote                {};
+    glossed_string MidpointValuesFootnote     {};
+    glossed_string SinglePremiumFootnote      {};
+    glossed_string MonthlyChargesFootnote     {};
+    glossed_string UltCreditingRateFootnote   {};
+    glossed_string UltCreditingRateHeader     {};
+    glossed_string MaxNaarFootnote            {};
+    glossed_string PremTaxSurrChgFootnote     {};
+    glossed_string PolicyFeeFootnote          {};
+    glossed_string AssetChargeFootnote        {};
+    glossed_string InvestmentIncomeFootnote   {};
+    glossed_string IrrDbFootnote              {};
+    glossed_string IrrCsvFootnote             {};
+    glossed_string MortalityChargesFootnote   {};
+    glossed_string LoanAndWithdrawalFootnote  {};
+    glossed_string LoanFootnote               {};
+    glossed_string ImprimaturPresale          {};
+    glossed_string ImprimaturPresaleComposite {};
+    glossed_string ImprimaturInforce          {};
+    glossed_string ImprimaturInforceComposite {};
+    glossed_string StateMarketingImprimatur   {};
+    glossed_string NonGuaranteedFootnote      {};
+    glossed_string NonGuaranteedFootnote1     {};
+    glossed_string NonGuaranteedFootnote1Tx   {};
+    glossed_string FnMonthlyDeductions        {};
+    glossed_string SurrenderFootnote          {};
+    glossed_string PortabilityFootnote        {};
+    glossed_string FundRateFootnote           {};
+    glossed_string IssuingCompanyFootnote     {};
+    glossed_string SubsidiaryFootnote         {};
+    glossed_string PlacementAgentFootnote     {};
+    glossed_string MarketingNameFootnote      {};
+    glossed_string GuarIssueDisclaimerNcSc    {};
+    glossed_string GuarIssueDisclaimerMd      {};
+    glossed_string GuarIssueDisclaimerTx      {};
+    glossed_string IllRegCertAgent            {};
+    glossed_string IllRegCertAgentIl          {};
+    glossed_string IllRegCertAgentTx          {};
+    glossed_string IllRegCertClient           {};
+    glossed_string IllRegCertClientIl         {};
+    glossed_string IllRegCertClientTx         {};
+    glossed_string FnMaturityAge              {};
+    glossed_string FnPartialMortality         {};
+    glossed_string FnProspectus               {};
+    glossed_string FnInitialSpecAmt           {};
+    glossed_string FnInforceAcctVal           {};
+    glossed_string FnInforceTaxBasis          {};
+    glossed_string Fn1035Charge               {};
+    glossed_string FnMecExtraWarning          {};
+    glossed_string FnNotTaxAdvice             {};
+    glossed_string FnNotTaxAdvice2            {};
+    glossed_string FnImf                      {};
+    glossed_string FnCensus                   {};
+    glossed_string FnDacTax                   {};
+    glossed_string FnDefnLifeIns              {};
+    glossed_string FnBoyEoy                   {};
+    glossed_string FnGeneralAccount           {};
+    glossed_string FnPpMemorandum             {};
+    glossed_string FnPpAccreditedInvestor     {};
+    glossed_string FnPpLoads                  {};
+    glossed_string FnProposalUnderwriting     {};
+    glossed_string FnGuaranteedPremium        {};
+    glossed_string FnOmnibusDisclaimer        {};
+    glossed_string FnInitialDbo               {};
+    glossed_string DefnGuarGenAcctRate        {};
+    glossed_string DefnAV                     {};
+    glossed_string DefnCSV                    {};
+    glossed_string DefnMec                    {};
+    glossed_string DefnOutlay                 {};
+    glossed_string DefnSpecAmt                {};
 };
 
 LMI_SO std::string filename_from_product_name(std::string const&);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]