[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master fd2c4e6: Replace lmi::uncopyable with "=delet
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master fd2c4e6: Replace lmi::uncopyable with "=delete" special member functions |
Date: |
Sat, 4 Mar 2017 11:33:21 -0500 (EST) |
branch: master
commit fd2c4e65d8172637b37a4dc8fb7edcf01a0b1b58
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Replace lmi::uncopyable with "=delete" special member functions
---
Makefile.am | 1 -
about_dialog.hpp | 8 +--
account_value.hpp | 5 +-
actuarial_table.hpp | 6 +--
any_member.hpp | 11 ++--
authenticity.hpp | 4 +-
basic_values.hpp | 5 +-
cache_file_reads.hpp | 6 ++-
callback.hpp | 7 ++-
census_document.hpp | 7 +--
census_view.hpp | 7 +--
commutation_functions.hpp | 9 ++--
configurable_settings.hpp | 8 +--
database.hpp | 5 +-
database_view.hpp | 8 +--
dbdict.hpp | 11 ++--
death_benefits.hpp | 5 +-
docmanager_ex.hpp | 8 +--
emit_ledger.hpp | 5 +-
fenv_guard.hpp | 5 +-
file_command.hpp | 2 -
fund_data.hpp | 6 +--
global_settings.hpp | 4 +-
gpt_document.hpp | 7 +--
gpt_view.hpp | 7 +--
gpt_xml_document.hpp | 5 +-
group_quote_pdf_gen.hpp | 6 ++-
group_quote_pdf_gen_wx.cpp | 4 +-
icon_monger.hpp | 8 +--
ihs_irc7702.hpp | 5 +-
illustration_document.hpp | 7 +--
illustration_view.hpp | 7 +--
input_sequence.hpp | 5 +-
input_sequence_parser.hpp | 5 +-
ledger_text_formats.cpp | 9 ++--
ledgervalues.hpp | 5 +-
loads_impl.hpp | 2 -
main_wx_test.cpp | 4 +-
mec_document.hpp | 7 +--
mec_view.hpp | 7 +--
mec_xml_document.hpp | 5 +-
msw_workarounds.hpp | 5 +-
multidimgrid_any.cpp | 4 +-
multidimgrid_any.hpp | 15 ++++--
multidimgrid_tools.hpp | 7 +--
multiple_cell_document.hpp | 5 +-
mvc_controller.hpp | 8 +--
name_value_pairs.hpp | 6 +--
null_stream.cpp | 7 +--
outlay.hpp | 5 +-
policy_view.hpp | 8 +--
premium_tax.hpp | 5 +-
product_data.hpp | 8 +--
product_editor.hpp | 21 +++++---
progress_meter.hpp | 5 +-
rate_table.cpp | 10 +++-
rate_table.hpp | 10 ++--
rate_table_test.cpp | 5 +-
rounding_rules.cpp | 2 +-
rounding_rules.hpp | 8 +--
rounding_view.hpp | 8 +--
single_cell_document.hpp | 5 +-
skeleton.hpp | 8 +--
test_coding_rules.cpp | 5 +-
text_view.hpp | 8 +--
tier_view.hpp | 8 +--
timer.hpp | 5 +-
transferor.hpp | 8 +--
uncopyable_lmi.hpp | 124 -------------------------------------------
view_ex.hpp | 8 +--
wx_test_benchmark_census.cpp | 17 +++---
wx_test_case.hpp | 7 +--
wx_test_document.hpp | 5 +-
wx_test_output.hpp | 16 +++---
wx_test_validate_output.cpp | 1 -
xml_lmi.hpp | 9 ++--
76 files changed, 287 insertions(+), 347 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index a586dd2..d818266 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1264,7 +1264,6 @@ noinst_HEADERS = \
tn_range_type_trammels.hpp \
tn_range_types.hpp \
transferor.hpp \
- uncopyable_lmi.hpp \
value_cast.hpp \
version.hpp \
view_ex.hpp \
diff --git a/about_dialog.hpp b/about_dialog.hpp
index c16e5e6..74ee433 100644
--- a/about_dialog.hpp
+++ b/about_dialog.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/dialog.h>
/// Implementation notes: class AboutDialog.
@@ -51,8 +49,7 @@
/// for consistency, so does the first.
class AboutDialog
- :public wxDialog
- ,private lmi::uncopyable<AboutDialog>
+ :public wxDialog
{
public:
AboutDialog(wxWindow* parent);
@@ -62,6 +59,9 @@ class AboutDialog
int ShowModal() override;
private:
+ AboutDialog(AboutDialog const&) = delete;
+ AboutDialog& operator=(AboutDialog const&) = delete;
+
void UponReadLicense(wxCommandEvent&);
DECLARE_EVENT_TABLE()
diff --git a/account_value.hpp b/account_value.hpp
index a9bd5ad..ba85836 100644
--- a/account_value.hpp
+++ b/account_value.hpp
@@ -27,7 +27,6 @@
#include "basic_values.hpp"
#include "oecumenic_enumerations.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <fstream>
#include <iosfwd>
@@ -48,7 +47,6 @@ class LedgerVariant;
class LMI_SO AccountValue
:protected BasicValues
- ,private lmi::uncopyable<AccountValue>
{
friend class SolveHelper;
friend class run_census_in_parallel;
@@ -93,6 +91,9 @@ class LMI_SO AccountValue
std::shared_ptr<Ledger const> ledger_from_av() const;
private:
+ AccountValue(AccountValue const&) = delete;
+ AccountValue& operator=(AccountValue const&) = delete;
+
LedgerInvariant const& InvariantValues() const;
LedgerVariant const& VariantValues () const;
diff --git a/actuarial_table.hpp b/actuarial_table.hpp
index fd288b6..d5c62ad 100644
--- a/actuarial_table.hpp
+++ b/actuarial_table.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <iosfwd>
#include <string>
#include <vector>
@@ -128,7 +126,6 @@ enum e_actuarial_table_method
/// compatibility.
class actuarial_table final
- :private lmi::uncopyable <actuarial_table>
{
public:
actuarial_table(std::string const& filename, int table_number);
@@ -152,6 +149,9 @@ class actuarial_table final
int max_select_age () const {return max_select_age_ ;}
private:
+ actuarial_table(actuarial_table const&) = delete;
+ actuarial_table& operator=(actuarial_table const&) = delete;
+
void find_table();
void parse_table();
void read_values(std::istream& is, int nominal_length);
diff --git a/any_member.hpp b/any_member.hpp
index c02d047..7035764 100644
--- a/any_member.hpp
+++ b/any_member.hpp
@@ -64,7 +64,6 @@
#include "assert_lmi.hpp"
#include "rtti_lmi.hpp"
-#include "uncopyable_lmi.hpp"
#include "value_cast.hpp"
#include <algorithm> // std::lower_bound(), std::swap()
@@ -109,8 +108,7 @@ inline placeholder::~placeholder() = default;
template<typename ClassType, typename ValueType>
class holder
- :public placeholder
- ,private lmi::uncopyable<holder<ClassType,ValueType>>
+ :public placeholder
{
// Friendship is extended to class any_member only to support its
// cast operations.
@@ -132,6 +130,9 @@ class holder
#endif // defined LMI_MSC
private:
+ holder(holder const&) = delete;
+ holder& operator=(holder const&) = delete;
+
ClassType* object_;
ValueType held_;
};
@@ -523,7 +524,6 @@ MemberType const* member_cast(any_member<ClassType> const&
member)
template<typename ClassType>
class MemberSymbolTable
- :private lmi::uncopyable<MemberSymbolTable<ClassType>>
{
typedef std::map<std::string, any_member<ClassType>> member_map_type;
typedef typename member_map_type::value_type member_pair_type;
@@ -545,6 +545,9 @@ class MemberSymbolTable
void ascribe(std::string const&, ValueType SameOrBaseClassType::*);
private:
+ MemberSymbolTable(MemberSymbolTable const&) = delete;
+ MemberSymbolTable& operator=(MemberSymbolTable const&) = delete;
+
void complain_that_no_such_member_is_ascribed(std::string const&) const;
member_map_type map_;
diff --git a/authenticity.hpp b/authenticity.hpp
index 5c1231f..447b8f6 100644
--- a/authenticity.hpp
+++ b/authenticity.hpp
@@ -26,7 +26,6 @@
#include "calendar_date.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/path.hpp>
@@ -48,7 +47,6 @@ enum {md5len = 128 / CHAR_BIT};
/// peremptorily-invalid default value of JDN zero.
class Authenticity final
- :private lmi::uncopyable <Authenticity>
{
friend class PasskeyTest;
@@ -62,6 +60,8 @@ class Authenticity final
private:
Authenticity();
~Authenticity();
+ Authenticity(Authenticity const&) = delete;
+ Authenticity& operator=(Authenticity const&) = delete;
static void ResetCache();
diff --git a/basic_values.hpp b/basic_values.hpp
index eb37fe9..c43b6a0 100644
--- a/basic_values.hpp
+++ b/basic_values.hpp
@@ -30,7 +30,6 @@
#include "oecumenic_enumerations.hpp"
#include "round_to.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "yare_input.hpp"
#include <memory> // std::shared_ptr
@@ -79,7 +78,6 @@ enum EBlend
};
class LMI_SO BasicValues
- :private lmi::uncopyable<BasicValues>
{
public:
BasicValues(Input const& input);
@@ -382,6 +380,9 @@ class LMI_SO BasicValues
std::vector<double> TieredMECharges;
private:
+ BasicValues(BasicValues const&) = delete;
+ BasicValues& operator=(BasicValues const&) = delete;
+
double GetModalPrem
(int a_year
,mcenum_mode a_mode
diff --git a/cache_file_reads.hpp b/cache_file_reads.hpp
index 1f2b556..eeb7e43 100644
--- a/cache_file_reads.hpp
+++ b/cache_file_reads.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "assert_lmi.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/operations.hpp>
@@ -58,7 +57,6 @@ namespace detail
template<typename T>
class file_cache
- :private lmi::uncopyable<file_cache<T>>
{
public:
using retrieved_type = std::shared_ptr<T>;
@@ -97,6 +95,10 @@ class file_cache
}
private:
+ file_cache() = default;
+ file_cache(file_cache const&) = delete;
+ file_cache& operator=(file_cache const&) = delete;
+
struct record
{
retrieved_type data;
diff --git a/callback.hpp b/callback.hpp
index 03ceb86..6d7d328 100644
--- a/callback.hpp
+++ b/callback.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <stdexcept>
#include <type_traits>
@@ -96,17 +95,21 @@
template<typename FunctionPointer>
class LMI_SO callback final
- :private lmi::uncopyable <callback<FunctionPointer>>
{
static_assert(std::is_pointer<FunctionPointer>::value, "");
typedef typename std::remove_pointer<FunctionPointer>::type f_type;
static_assert(std::is_function<f_type>::value, "");
public:
+ callback() = default;
+
FunctionPointer operator()() const;
void initialize(FunctionPointer concrete_pointer);
private:
+ callback(callback const&) = delete;
+ callback& operator=(callback const&) = delete;
+
static FunctionPointer function_pointer_;
};
diff --git a/census_document.hpp b/census_document.hpp
index fae41db..d438619 100644
--- a/census_document.hpp
+++ b/census_document.hpp
@@ -26,15 +26,13 @@
#include "input.hpp"
#include "multiple_cell_document.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/docview.h>
class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
class CensusDocument
- :public wxDocument
- ,private lmi::uncopyable<CensusDocument>
+ :public wxDocument
{
friend class CensusView;
@@ -43,6 +41,9 @@ class CensusDocument
~CensusDocument() override;
private:
+ CensusDocument(CensusDocument const&) = delete;
+ CensusDocument& operator=(CensusDocument const&) = delete;
+
wxDataViewCtrl& PredominantViewWindow() const;
// wxDocument overrides.
diff --git a/census_view.hpp b/census_view.hpp
index 0e22a93..ef632f8 100644
--- a/census_view.hpp
+++ b/census_view.hpp
@@ -30,7 +30,6 @@
#include "ledger.hpp"
#include "mc_enum_type_enums.hpp" // enum mcenum_emission
#include "oecumenic_enumerations.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/object.h> // wxObjectDataPtr
@@ -45,8 +44,7 @@ class WXDLLIMPEXP_FWD_ADV wxDataViewEvent;
class WXDLLIMPEXP_FWD_ADV wxDataViewCtrl;
class CensusView final
- :public ViewEx
- ,private lmi::uncopyable <CensusView>
+ :public ViewEx
{
friend class CensusDocument;
friend class CensusViewDataViewModel;
@@ -55,6 +53,9 @@ class CensusView final
CensusView();
private:
+ CensusView(CensusView const&) = delete;
+ CensusView& operator=(CensusView const&) = delete;
+
void update_visible_columns();
CensusDocument& document() const;
diff --git a/commutation_functions.hpp b/commutation_functions.hpp
index 9f9c82a..2590291 100644
--- a/commutation_functions.hpp
+++ b/commutation_functions.hpp
@@ -26,14 +26,12 @@
#include "mc_enum_type_enums.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <vector>
/// Ordinary-life commutation functions.
class LMI_SO OLCommFns final
- :private lmi::uncopyable <OLCommFns>
{
public:
OLCommFns
@@ -51,6 +49,9 @@ class LMI_SO OLCommFns final
std::vector<double> const& M() const {return m;}
private:
+ OLCommFns(OLCommFns const&) = delete;
+ OLCommFns& operator=(OLCommFns const&) = delete;
+
int Length;
std::vector<double> const& q;
@@ -79,7 +80,6 @@ class LMI_SO OLCommFns final
/// for "modal", but would too easily be taken as connoting "monthly".
class LMI_SO ULCommFns final
- :private lmi::uncopyable <ULCommFns>
{
public:
ULCommFns
@@ -101,6 +101,9 @@ class LMI_SO ULCommFns final
std::vector<double> const& kM() const {return km;}
private:
+ ULCommFns(ULCommFns const&) = delete;
+ ULCommFns& operator=(ULCommFns const&) = delete;
+
std::vector<double> qc;
std::vector<double> ic;
std::vector<double> ig;
diff --git a/configurable_settings.hpp b/configurable_settings.hpp
index 96f1f43..9821c1d 100644
--- a/configurable_settings.hpp
+++ b/configurable_settings.hpp
@@ -26,7 +26,6 @@
#include "any_member.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_serializable.hpp"
#include <string>
@@ -43,9 +42,8 @@
/// Data members are documented in their accessors' implementations.
class LMI_SO configurable_settings final
- :private lmi::uncopyable <configurable_settings>
- ,public xml_serializable <configurable_settings>
- ,public MemberSymbolTable <configurable_settings>
+ :public xml_serializable <configurable_settings>
+ ,public MemberSymbolTable <configurable_settings>
{
public:
static configurable_settings& instance();
@@ -71,6 +69,8 @@ class LMI_SO configurable_settings final
private:
configurable_settings();
~configurable_settings() override;
+ configurable_settings(configurable_settings const&) = delete;
+ configurable_settings& operator=(configurable_settings const&) = delete;
void ascribe_members();
void load();
diff --git a/database.hpp b/database.hpp
index 907c677..c90d25e 100644
--- a/database.hpp
+++ b/database.hpp
@@ -28,7 +28,6 @@
#include "dbnames.hpp" // e_database_key
#include "mc_enum_type_enums.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <memory> // std::shared_ptr
#include <string>
@@ -41,7 +40,6 @@ class yare_input;
/// Database of product parameters.
class LMI_SO product_database final
- :private lmi::uncopyable <product_database>
{
friend class input_test; // For test_product_database().
friend class premium_tax_test; // For test_rates().
@@ -73,6 +71,9 @@ class LMI_SO product_database final
bool varies_by_state(e_database_key) const;
private:
+ product_database(product_database const&) = delete;
+ product_database& operator=(product_database const&) = delete;
+
void initialize(std::string const& product_name);
DBDictionary const& db() const;
diff --git a/database_view.hpp b/database_view.hpp
index 6d414f7..6517e32 100644
--- a/database_view.hpp
+++ b/database_view.hpp
@@ -26,8 +26,6 @@
#include "product_editor.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <memory> // std::shared_ptr
class DatabaseDocument;
@@ -35,14 +33,16 @@ class DatabaseTableAdapter;
class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
class DatabaseView final
- :public TreeGridViewBase
- ,private lmi::uncopyable <DatabaseView>
+ :public TreeGridViewBase
{
public:
DatabaseView();
~DatabaseView() override;
private:
+ DatabaseView(DatabaseView const&) = delete;
+ DatabaseView& operator=(DatabaseView const&) = delete;
+
// ViewEx required implementation.
char const* icon_xrc_resource () const override;
char const* menubar_xrc_resource() const override;
diff --git a/dbdict.hpp b/dbdict.hpp
index 8db66e2..165776c 100644
--- a/dbdict.hpp
+++ b/dbdict.hpp
@@ -28,7 +28,6 @@
#include "cache_file_reads.hpp"
#include "dbvalue.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_serializable.hpp"
#include <string>
@@ -36,10 +35,9 @@
/// Cached product database.
class LMI_SO DBDictionary final
- :private lmi::uncopyable <DBDictionary>
- ,public xml_serializable <DBDictionary>
- ,public MemberSymbolTable <DBDictionary>
- ,public cache_file_reads <DBDictionary>
+ :public xml_serializable <DBDictionary>
+ ,public MemberSymbolTable <DBDictionary>
+ ,public cache_file_reads <DBDictionary>
{
friend class DatabaseDocument;
friend class input_test; // For test_product_database().
@@ -60,6 +58,9 @@ class LMI_SO DBDictionary final
void InitAntediluvian();
private:
+ DBDictionary(DBDictionary const&) = delete;
+ DBDictionary& operator=(DBDictionary const&) = delete;
+
void Init(std::string const& filename);
void ascribe_members();
diff --git a/death_benefits.hpp b/death_benefits.hpp
index 0136c7e..3d721c9 100644
--- a/death_benefits.hpp
+++ b/death_benefits.hpp
@@ -25,14 +25,12 @@
#include "config.hpp"
#include "mc_enum_type_enums.hpp"
-#include "uncopyable_lmi.hpp"
#include <vector>
class yare_input;
class death_benefits final
- :private lmi::uncopyable <death_benefits>
{
public:
death_benefits(int, yare_input const&);
@@ -46,6 +44,9 @@ class death_benefits final
std::vector<double> const& supplamt() const;
private:
+ death_benefits(death_benefits const&) = delete;
+ death_benefits& operator=(death_benefits const&) = delete;
+
int length_;
std::vector<mcenum_dbopt> dbopt_ ;
std::vector<double> specamt_ ;
diff --git a/docmanager_ex.hpp b/docmanager_ex.hpp
index 2efac5a..2387f58 100644
--- a/docmanager_ex.hpp
+++ b/docmanager_ex.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/docview.h>
#include <memory> // std::unique_ptr
@@ -35,8 +33,7 @@ class WXDLLIMPEXP_FWD_CORE wxPageSetupDialogData;
class WXDLLIMPEXP_FWD_CORE wxPrintData;
class DocManagerEx
- :public wxDocManager
- ,private lmi::uncopyable<DocManagerEx>
+ :public wxDocManager
{
public:
explicit DocManagerEx
@@ -53,6 +50,9 @@ class DocManagerEx
void DissociateFileHistoryFromFileMenu(wxMenuBar*);
private:
+ DocManagerEx(DocManagerEx const&) = delete;
+ DocManagerEx& operator=(DocManagerEx const&) = delete;
+
void UponPageSetup(wxCommandEvent&);
// WX !! OnPreview() and OnPrint() aren't virtual; shouldn't they be?
void UponPreview(wxCommandEvent&);
diff --git a/emit_ledger.hpp b/emit_ledger.hpp
index 81ef027..0b798fd 100644
--- a/emit_ledger.hpp
+++ b/emit_ledger.hpp
@@ -26,7 +26,6 @@
#include "mc_enum_type_enums.hpp" // enum mcenum_emission
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/path.hpp>
@@ -41,7 +40,6 @@ class Ledger;
/// returns time spent, which is almost always wanted.
class LMI_SO ledger_emitter final
- :private lmi::uncopyable <ledger_emitter>
{
public:
ledger_emitter(fs::path const& case_filepath, mcenum_emission emission);
@@ -52,6 +50,9 @@ class LMI_SO ledger_emitter final
double finish ();
private:
+ ledger_emitter(ledger_emitter const&) = delete;
+ ledger_emitter& operator=(ledger_emitter const&) = delete;
+
fs::path const& case_filepath_;
mcenum_emission emission_;
diff --git a/fenv_guard.hpp b/fenv_guard.hpp
index ea03435..81d42bf 100644
--- a/fenv_guard.hpp
+++ b/fenv_guard.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
/// Guard class for critical floating-point calculations.
///
@@ -39,7 +38,6 @@
/// floating-point calculations that presume the invariant.
class LMI_SO fenv_guard final
- :private lmi::uncopyable <fenv_guard>
{
public:
fenv_guard();
@@ -48,6 +46,9 @@ class LMI_SO fenv_guard final
static int instance_count();
private:
+ fenv_guard(fenv_guard const&) = delete;
+ fenv_guard& operator=(fenv_guard const&) = delete;
+
static int instance_count_;
};
diff --git a/file_command.hpp b/file_command.hpp
index 293e0a7..10b5da5 100644
--- a/file_command.hpp
+++ b/file_command.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <string>
@@ -47,7 +46,6 @@ bool LMI_SO file_command_initialize(file_command_fp_type);
/// wx, if that ever becomes necessary.
struct LMI_SO file_command
- :private lmi::uncopyable<file_command>
{
void operator()(std::string const&, std::string const&) const;
};
diff --git a/fund_data.hpp b/fund_data.hpp
index 4a30dca..6e9fb5d 100644
--- a/fund_data.hpp
+++ b/fund_data.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <string>
#include <vector>
@@ -61,7 +60,6 @@ class LMI_SO FundInfo final
};
class LMI_SO FundData final
- :private lmi::uncopyable <FundData>
{
public:
FundData(std::string const& a_Filename);
@@ -74,7 +72,9 @@ class LMI_SO FundData final
int GetNumberOfFunds() const;
private:
- FundData(); // Private, but implemented.
+ FundData(); // Used by write_funds_files().
+ FundData(FundData const&) = delete;
+ FundData& operator=(FundData const&) = delete;
void Read (std::string const& a_Filename);
void Write(std::string const& a_Filename) const;
diff --git a/global_settings.hpp b/global_settings.hpp
index 0afb65f..ecc8771 100644
--- a/global_settings.hpp
+++ b/global_settings.hpp
@@ -26,7 +26,6 @@
#include "calendar_date.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/path.hpp>
@@ -66,7 +65,6 @@
/// functions to validate their arguments.
class LMI_SO global_settings final
- :private lmi::uncopyable <global_settings>
{
public:
static global_settings& instance();
@@ -90,6 +88,8 @@ class LMI_SO global_settings final
private:
global_settings();
~global_settings();
+ global_settings(global_settings const&) = delete;
+ global_settings& operator=(global_settings const&) = delete;
bool mellon_;
bool ash_nazg_;
diff --git a/gpt_document.hpp b/gpt_document.hpp
index 39fa0d4..9b5e28a 100644
--- a/gpt_document.hpp
+++ b/gpt_document.hpp
@@ -26,7 +26,6 @@
#include "gpt_input.hpp"
#include "gpt_xml_document.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/docview.h>
@@ -34,8 +33,7 @@ class gpt_view;
class WXDLLIMPEXP_FWD_CORE wxHtmlWindow;
class gpt_document
- :public wxDocument
- ,private lmi::uncopyable<gpt_document>
+ :public wxDocument
{
friend class gpt_view;
@@ -46,6 +44,9 @@ class gpt_document
gpt_view& PredominantView() const;
private:
+ gpt_document(gpt_document const&) = delete;
+ gpt_document& operator=(gpt_document const&) = delete;
+
wxHtmlWindow& PredominantViewWindow() const;
// wxDocument overrides.
diff --git a/gpt_view.hpp b/gpt_view.hpp
index f5cfd8e..3582177 100644
--- a/gpt_view.hpp
+++ b/gpt_view.hpp
@@ -28,7 +28,6 @@
#include "view_ex.hpp"
#include "oecumenic_enumerations.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/event.h>
@@ -60,8 +59,7 @@ class gpt_mvc_view
};
class gpt_view final
- :public ViewEx
- ,private lmi::uncopyable <gpt_view>
+ :public ViewEx
{
friend class gpt_document;
@@ -70,6 +68,9 @@ class gpt_view final
~gpt_view() override;
private:
+ gpt_view(gpt_view const&) = delete;
+ gpt_view& operator=(gpt_view const&) = delete;
+
gpt_document& document() const;
oenum_mvc_dv_rc edit_parameters();
diff --git a/gpt_xml_document.hpp b/gpt_xml_document.hpp
index d9bdcee..0dcc8fa 100644
--- a/gpt_xml_document.hpp
+++ b/gpt_xml_document.hpp
@@ -26,14 +26,12 @@
#include "gpt_input.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_lmi_fwd.hpp"
#include <iosfwd>
#include <string>
class LMI_SO gpt_xml_document final
- :private lmi::uncopyable <gpt_xml_document>
{
friend class gpt_document;
friend class gpt_view;
@@ -50,6 +48,9 @@ class LMI_SO gpt_xml_document final
void write(std::ostream&) const;
private:
+ gpt_xml_document(gpt_xml_document const&) = delete;
+ gpt_xml_document& operator=(gpt_xml_document const&) = delete;
+
void parse(xml_lmi::dom_parser const&);
std::string const& xml_root_name() const;
diff --git a/group_quote_pdf_gen.hpp b/group_quote_pdf_gen.hpp
index a2ffe8c..05fa309 100644
--- a/group_quote_pdf_gen.hpp
+++ b/group_quote_pdf_gen.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <memory> // std::shared_ptr
#include <string>
@@ -41,7 +40,6 @@ class Ledger;
/// uses wxPdfDocument and other wx facilities and is only part of libskeleton.
class LMI_SO group_quote_pdf_generator
- :private lmi::uncopyable<group_quote_pdf_generator>
{
public:
typedef std::shared_ptr<group_quote_pdf_generator> (*creator_type)();
@@ -56,6 +54,10 @@ class LMI_SO group_quote_pdf_generator
protected:
group_quote_pdf_generator();
+
+ private:
+ group_quote_pdf_generator(group_quote_pdf_generator const&) = delete;
+ group_quote_pdf_generator& operator=(group_quote_pdf_generator const&) =
delete;
};
#endif // group_quote_pdf_gen_hpp
diff --git a/group_quote_pdf_gen_wx.cpp b/group_quote_pdf_gen_wx.cpp
index 7885fc5..30af584 100644
--- a/group_quote_pdf_gen_wx.cpp
+++ b/group_quote_pdf_gen_wx.cpp
@@ -206,7 +206,6 @@ void append_name_value_to_html_table
/// less likely.
class open_and_ensure_closing_tag
- :private lmi::uncopyable<open_and_ensure_closing_tag>
{
public:
open_and_ensure_closing_tag(wxString& html, char const* tag)
@@ -222,6 +221,9 @@ class open_and_ensure_closing_tag
}
private:
+ open_and_ensure_closing_tag(open_and_ensure_closing_tag const&) = delete;
+ open_and_ensure_closing_tag& operator=(open_and_ensure_closing_tag const&)
= delete;
+
wxString& html_;
wxString const tag_;
};
diff --git a/icon_monger.hpp b/icon_monger.hpp
index 8ff2afd..9f773d3 100644
--- a/icon_monger.hpp
+++ b/icon_monger.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/artprov.h>
#include <map>
@@ -35,14 +33,16 @@
/// Icon provider for wx interface.
class icon_monger
- :public wxArtProvider
- ,private lmi::uncopyable<icon_monger>
+ :public wxArtProvider
{
public:
icon_monger();
~icon_monger() override;
private:
+ icon_monger(icon_monger const&) = delete;
+ icon_monger& operator=(icon_monger const&) = delete;
+
// wxArtProvider required implementation.
wxBitmap CreateBitmap
(wxArtID const&
diff --git a/ihs_irc7702.hpp b/ihs_irc7702.hpp
index 6c6fd3e..270de99 100644
--- a/ihs_irc7702.hpp
+++ b/ihs_irc7702.hpp
@@ -26,7 +26,6 @@
#include "mc_enum_type_enums.hpp"
#include "round_to.hpp"
-#include "uncopyable_lmi.hpp"
#include <memory> // std::unique_ptr
#include <vector>
@@ -51,7 +50,6 @@ class ULCommFns;
// values are especially needed for the iterative specamt calculation.
class Irc7702 final
- :private lmi::uncopyable <Irc7702>
{
friend class FindSpecAmt;
friend class gpt_specamt;
@@ -141,6 +139,9 @@ class Irc7702 final
double premiums_paid() const;
private:
+ Irc7702(Irc7702 const&) = delete;
+ Irc7702& operator=(Irc7702 const&) = delete;
+
// Interest and DB Option basis
enum EIOBasis
{Opt1Int4Pct
diff --git a/illustration_document.hpp b/illustration_document.hpp
index e491dfd..e799961 100644
--- a/illustration_document.hpp
+++ b/illustration_document.hpp
@@ -26,7 +26,6 @@
#include "input.hpp"
#include "single_cell_document.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/docview.h>
@@ -47,8 +46,7 @@ class IllustrationView;
class WXDLLIMPEXP_FWD_CORE wxHtmlWindow;
class IllustrationDocument
- :public wxDocument
- ,private lmi::uncopyable<IllustrationDocument>
+ :public wxDocument
{
friend class IllustrationView;
@@ -59,6 +57,9 @@ class IllustrationDocument
IllustrationView& PredominantView() const;
private:
+ IllustrationDocument(IllustrationDocument const&) = delete;
+ IllustrationDocument& operator=(IllustrationDocument const&) = delete;
+
wxHtmlWindow& PredominantViewWindow() const;
// wxDocument overrides.
diff --git a/illustration_view.hpp b/illustration_view.hpp
index 0b787a2..5191ca8 100644
--- a/illustration_view.hpp
+++ b/illustration_view.hpp
@@ -36,7 +36,6 @@
#include "mc_enum_type_enums.hpp" // enum mcenum_emission
#include "oecumenic_enumerations.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/event.h>
@@ -51,8 +50,7 @@ class WXDLLIMPEXP_FWD_CORE wxHtmlWindow;
// only for edit and run; in the census view class, it's used widely.
class IllustrationView final
- :public ViewEx
- ,private lmi::uncopyable <IllustrationView>
+ :public ViewEx
{
friend class IllustrationDocument;
@@ -69,6 +67,9 @@ class IllustrationView final
void SetLedger(std::shared_ptr<Ledger const>);
private:
+ IllustrationView(IllustrationView const&) = delete;
+ IllustrationView& operator=(IllustrationView const&) = delete;
+
IllustrationDocument& document() const;
oenum_mvc_dv_rc edit_parameters();
diff --git a/input_sequence.hpp b/input_sequence.hpp
index 94e2e8a..03e53f4 100644
--- a/input_sequence.hpp
+++ b/input_sequence.hpp
@@ -133,13 +133,11 @@
#include "input_sequence_interval.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <string>
#include <vector>
class LMI_SO InputSequence final
- :private lmi::uncopyable <InputSequence>
{
template<typename T>
friend std::string canonicalized_input_sequence(std::vector<T> const&);
@@ -168,6 +166,9 @@ class LMI_SO InputSequence final
std::vector<double> const& seriatim_numbers() const;
private:
+ InputSequence(InputSequence const&) = delete;
+ InputSequence& operator=(InputSequence const&) = delete;
+
explicit InputSequence(std::vector<std::string> const&);
explicit InputSequence(std::vector<double> const&);
diff --git a/input_sequence_parser.hpp b/input_sequence_parser.hpp
index a2603e4..1644008 100644
--- a/input_sequence_parser.hpp
+++ b/input_sequence_parser.hpp
@@ -28,14 +28,12 @@
#include "input_sequence_interval.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <sstream>
#include <string>
#include <vector>
class SequenceParser final
- :private lmi::uncopyable <SequenceParser>
{
public:
SequenceParser
@@ -55,6 +53,9 @@ class SequenceParser final
std::vector<ValueInterval> const& intervals() const;
private:
+ SequenceParser(SequenceParser const&) = delete;
+ SequenceParser& operator=(SequenceParser const&) = delete;
+
enum token_type
{e_eof = 0
,e_major_separator = ';'
diff --git a/ledger_text_formats.cpp b/ledger_text_formats.cpp
index 410dcea..0632c63 100644
--- a/ledger_text_formats.cpp
+++ b/ledger_text_formats.cpp
@@ -37,7 +37,6 @@
#include "map_lookup.hpp"
#include "mc_enum_types_aux.hpp" // is_subject_to_ill_reg()
#include "miscellany.hpp"
-#include "uncopyable_lmi.hpp"
#include "value_cast.hpp"
#include <algorithm>
@@ -139,7 +138,6 @@ std::map<std::string,ledger_metadata> const&
ledger_metadata_map()
}
class calculation_summary_formatter final
- :private lmi::uncopyable <calculation_summary_formatter>
{
public:
calculation_summary_formatter(Ledger const&);
@@ -151,6 +149,9 @@ class calculation_summary_formatter final
std::string top_note(std::string const& line_break) const;
private:
+ calculation_summary_formatter(calculation_summary_formatter const&) =
delete;
+ calculation_summary_formatter& operator=(calculation_summary_formatter
const&) = delete;
+
Ledger const& ledger_;
LedgerInvariant const& invar_;
int const max_length_;
@@ -833,7 +834,6 @@ void PrintRosterTabDelimited
}
class FlatTextLedgerPrinter final
- :private lmi::uncopyable <FlatTextLedgerPrinter>
{
public:
FlatTextLedgerPrinter(Ledger const&, std::ostream&);
@@ -842,6 +842,9 @@ class FlatTextLedgerPrinter final
void Print() const;
private:
+ FlatTextLedgerPrinter(FlatTextLedgerPrinter const&) = delete;
+ FlatTextLedgerPrinter& operator=(FlatTextLedgerPrinter const&) = delete;
+
void PrintHeader () const;
void PrintFooter () const;
void PrintNarrativeSummary () const;
diff --git a/ledgervalues.hpp b/ledgervalues.hpp
index 12f4740..5fcd99a 100644
--- a/ledgervalues.hpp
+++ b/ledgervalues.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <memory> // std::shared_ptr
#include <string>
@@ -38,7 +37,6 @@ class Ledger;
/// This class encapsulates a frequently-used series of operations.
class IllusVal final
- :private lmi::uncopyable <IllusVal>
{
public:
explicit IllusVal(std::string const& filename);
@@ -49,6 +47,9 @@ class IllusVal final
std::shared_ptr<Ledger const> ledger() const;
private:
+ IllusVal(IllusVal const&) = delete;
+ IllusVal& operator=(IllusVal const&) = delete;
+
std::string filename_;
std::shared_ptr<Ledger const> ledger_;
};
diff --git a/loads_impl.hpp b/loads_impl.hpp
index 6075fc9..cd55d59 100644
--- a/loads_impl.hpp
+++ b/loads_impl.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "round_to.hpp"
-#include "uncopyable_lmi.hpp"
#include <vector>
@@ -80,7 +79,6 @@ class product_database;
/// implemented.
struct load_details
- :private lmi::uncopyable<load_details>
{
load_details
(int length
diff --git a/main_wx_test.cpp b/main_wx_test.cpp
index c746f0a..887bed3 100644
--- a/main_wx_test.cpp
+++ b/main_wx_test.cpp
@@ -29,7 +29,6 @@
#include "main_common.hpp" // initialize_application()
#include "path_utility.hpp" // initialize_filesystem()
#include "skeleton.hpp"
-#include "uncopyable_lmi.hpp"
#include "wx_test_case.hpp"
#include "wx_test_new.hpp"
@@ -150,7 +149,6 @@ struct TestsResults
/// This is a simple Meyers singleton.
class application_test final
- :private lmi::uncopyable <application_test>
{
public:
static application_test& instance();
@@ -181,6 +179,8 @@ class application_test final
private:
application_test();
+ application_test(application_test const&) = delete;
+ application_test& operator=(application_test const&) = delete;
// Sort all tests in alphabetical order of their names.
void sort_tests();
diff --git a/mec_document.hpp b/mec_document.hpp
index cda9524..a72be87 100644
--- a/mec_document.hpp
+++ b/mec_document.hpp
@@ -26,7 +26,6 @@
#include "mec_input.hpp"
#include "mec_xml_document.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/docview.h>
@@ -34,8 +33,7 @@ class mec_view;
class WXDLLIMPEXP_FWD_CORE wxHtmlWindow;
class mec_document
- :public wxDocument
- ,private lmi::uncopyable<mec_document>
+ :public wxDocument
{
friend class mec_view;
@@ -46,6 +44,9 @@ class mec_document
mec_view& PredominantView() const;
private:
+ mec_document(mec_document const&) = delete;
+ mec_document& operator=(mec_document const&) = delete;
+
wxHtmlWindow& PredominantViewWindow() const;
// wxDocument overrides.
diff --git a/mec_view.hpp b/mec_view.hpp
index aa67056..d301f45 100644
--- a/mec_view.hpp
+++ b/mec_view.hpp
@@ -28,7 +28,6 @@
#include "view_ex.hpp"
#include "oecumenic_enumerations.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/event.h>
@@ -60,8 +59,7 @@ class mec_mvc_view
};
class mec_view final
- :public ViewEx
- ,private lmi::uncopyable <mec_view>
+ :public ViewEx
{
friend class mec_document;
@@ -70,6 +68,9 @@ class mec_view final
~mec_view() override;
private:
+ mec_view(mec_view const&) = delete;
+ mec_view& operator=(mec_view const&) = delete;
+
mec_document& document() const;
oenum_mvc_dv_rc edit_parameters();
diff --git a/mec_xml_document.hpp b/mec_xml_document.hpp
index abfbc1c..0aa61fa 100644
--- a/mec_xml_document.hpp
+++ b/mec_xml_document.hpp
@@ -26,14 +26,12 @@
#include "mec_input.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_lmi_fwd.hpp"
#include <iosfwd>
#include <string>
class LMI_SO mec_xml_document final
- :private lmi::uncopyable <mec_xml_document>
{
friend class mec_document;
friend class mec_view;
@@ -50,6 +48,9 @@ class LMI_SO mec_xml_document final
void write(std::ostream&) const;
private:
+ mec_xml_document(mec_xml_document const&) = delete;
+ mec_xml_document& operator=(mec_xml_document const&) = delete;
+
void parse(xml_lmi::dom_parser const&);
std::string const& xml_root_name() const;
diff --git a/msw_workarounds.hpp b/msw_workarounds.hpp
index 034495b..5943099 100644
--- a/msw_workarounds.hpp
+++ b/msw_workarounds.hpp
@@ -26,8 +26,6 @@
#ifdef LMI_MSW
-#include "uncopyable_lmi.hpp"
-
#include <deque>
#include <string>
@@ -49,7 +47,6 @@
/// in order to let this reversal be expressed more cleanly.
class MswDllPreloader final
- :private lmi::uncopyable <MswDllPreloader>
{
public:
static MswDllPreloader& instance();
@@ -58,6 +55,8 @@ class MswDllPreloader final
private:
MswDllPreloader();
~MswDllPreloader();
+ MswDllPreloader(MswDllPreloader const&) = delete;
+ MswDllPreloader& operator=(MswDllPreloader const&) = delete;
void PreloadOneDll(std::string const& dll_name);
void UnloadOneDll (std::string const& dll_name);
diff --git a/multidimgrid_any.cpp b/multidimgrid_any.cpp
index 3a0b206..b9222f8 100644
--- a/multidimgrid_any.cpp
+++ b/multidimgrid_any.cpp
@@ -201,7 +201,6 @@ void MultiDimGridGrid::UponKeyDown(wxKeyEvent& event)
/// an update and it is the place to do it once for all the calls.
class GridRefreshTableDataGuard
- :private lmi::uncopyable<GridRefreshTableDataGuard>
{
public:
/// Construct guard for the counter, and use releaser at last exit
@@ -209,6 +208,9 @@ class GridRefreshTableDataGuard
~GridRefreshTableDataGuard();
private:
+ GridRefreshTableDataGuard(GridRefreshTableDataGuard const&) = delete;
+ GridRefreshTableDataGuard& operator=(GridRefreshTableDataGuard const&) =
delete;
+
MultiDimGrid& grid_;
};
diff --git a/multidimgrid_any.hpp b/multidimgrid_any.hpp
index ce2dfc6..4348cd6 100644
--- a/multidimgrid_any.hpp
+++ b/multidimgrid_any.hpp
@@ -90,7 +90,6 @@
#include "alert.hpp"
#include "assert_lmi.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/any.hpp>
@@ -189,7 +188,6 @@ class WXDLLIMPEXP_FWD_CORE wxGridBagSizer;
/// was up-to-date.
class MultiDimAxisAny
- :private lmi::uncopyable<MultiDimAxisAny>
{
public:
MultiDimAxisAny(std::string const& name);
@@ -212,6 +210,9 @@ class MultiDimAxisAny
virtual bool RefreshAdjustment(wxWindow&, unsigned int axis_id);
private:
+ MultiDimAxisAny(MultiDimAxisAny const&) = delete;
+ MultiDimAxisAny& operator=(MultiDimAxisAny const&) = delete;
+
/// Name of the axis used throughout the MultiDimGrid methods
std::string const name_;
};
@@ -470,7 +471,6 @@ inline void MultiDimTableAny::SetValueAny
class MultiDimGrid
:public wxPanel
,private wxGridTableBase
- ,private lmi::uncopyable<MultiDimGrid>
{
friend class GridRefreshTableDataGuard;
@@ -522,6 +522,9 @@ class MultiDimGrid
wxGrid& grid() const;
private:
+ MultiDimGrid(MultiDimGrid const&) = delete;
+ MultiDimGrid& operator=(MultiDimGrid const&) = delete;
+
/// Implementation of wxGridTableBase interface. The widget serves as a
data
/// source for the wxGrid component.
///
@@ -755,8 +758,7 @@ inline bool MultiDimGrid::RefreshAxisAdjustment(std::string
const& name)
/// PopulateChoiceList(): Fill the control with axis value labels
class MultiDimAxisAnyChoice
- :public wxChoice
- ,private lmi::uncopyable<MultiDimAxisAnyChoice>
+ :public wxChoice
{
friend class MultiDimAxisAny;
@@ -770,6 +772,9 @@ class MultiDimAxisAnyChoice
void PopulateChoiceList();
private:
+ MultiDimAxisAnyChoice(MultiDimAxisAnyChoice const&) = delete;
+ MultiDimAxisAnyChoice& operator=(MultiDimAxisAnyChoice const&) = delete;
+
// the axis that this object controls
MultiDimAxisAny const& axis_;
diff --git a/multidimgrid_tools.hpp b/multidimgrid_tools.hpp
index 374b07e..74b31ef 100644
--- a/multidimgrid_tools.hpp
+++ b/multidimgrid_tools.hpp
@@ -27,7 +27,6 @@
#include "multidimgrid_safe.hpp"
#include "alert.hpp"
-#include "uncopyable_lmi.hpp"
#include "value_cast.hpp"
#include <wx/choice.h>
@@ -86,8 +85,7 @@ class AxisMaxBoundAdjusterBase
template<typename Integral>
class AxisMaxBoundAdjuster
- :public AxisMaxBoundAdjusterBase
- ,private lmi::uncopyable<AxisMaxBoundAdjuster<Integral>>
+ :public AxisMaxBoundAdjusterBase
{
public:
AxisMaxBoundAdjuster
@@ -101,6 +99,9 @@ class AxisMaxBoundAdjuster
void SetMaximumAxisValue(Integral max_value);
private:
+ AxisMaxBoundAdjuster(AxisMaxBoundAdjuster const&) = delete;
+ AxisMaxBoundAdjuster& operator=(AxisMaxBoundAdjuster const&) = delete;
+
void DoUponChange() override;
void EnsureValidMaximumAxisValue(Integral const&) const;
diff --git a/multiple_cell_document.hpp b/multiple_cell_document.hpp
index 3848ccf..fb53c5e 100644
--- a/multiple_cell_document.hpp
+++ b/multiple_cell_document.hpp
@@ -26,7 +26,6 @@
#include "input.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_lmi_fwd.hpp"
#include <iosfwd>
@@ -77,7 +76,6 @@
/// that could of course be implemented.
class LMI_SO multiple_cell_document final
- :private lmi::uncopyable <multiple_cell_document>
{
// TODO ?? Avoid long-distance friendship...in single-cell class, too.
friend class CensusDocument;
@@ -97,6 +95,9 @@ class LMI_SO multiple_cell_document final
void write(std::ostream&) const;
private:
+ multiple_cell_document(multiple_cell_document const&) = delete;
+ multiple_cell_document& operator=(multiple_cell_document const&) = delete;
+
void parse (xml_lmi::dom_parser const&);
void parse_v0(xml_lmi::dom_parser const&);
diff --git a/mvc_controller.hpp b/mvc_controller.hpp
index 9998161..ee45859 100644
--- a/mvc_controller.hpp
+++ b/mvc_controller.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/bookctrl.h> // wxBookCtrlBase, wxBookCtrlBaseEvent
#include <wx/dialog.h>
#include <wx/stattext.h>
@@ -405,8 +403,7 @@ namespace model_view_controller{} // doxygen workaround.
/// Controller.
class MvcController final
- :public wxDialog
- ,private lmi::uncopyable <MvcController>
+ :public wxDialog
{
friend class MvcTest;
@@ -419,6 +416,9 @@ class MvcController final
MvcModel const& Model() const;
private:
+ MvcController(MvcController const&) = delete;
+ MvcController& operator=(MvcController const&) = delete;
+
void Assimilate(std::string const& name_to_ignore);
void Bind(std::string const& name, std::string& data) const;
wxBookCtrlBase & BookControl() ;
diff --git a/name_value_pairs.hpp b/name_value_pairs.hpp
index 729309a..cfd460e 100644
--- a/name_value_pairs.hpp
+++ b/name_value_pairs.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <map>
#include <string>
@@ -82,7 +80,6 @@
/// extra checks can easily be added if they become desirable.
class name_value_pairs final
- :private lmi::uncopyable <name_value_pairs>
{
friend int test_main(int, char*[]);
@@ -97,6 +94,9 @@ class name_value_pairs final
std::string string_numeric_value(std::string const& key) const;
private:
+ name_value_pairs(name_value_pairs const&) = delete;
+ name_value_pairs& operator=(name_value_pairs const&) = delete;
+
std::map<std::string, std::string> const& map() const;
string_map map_;
diff --git a/null_stream.cpp b/null_stream.cpp
index 8d883cf..c2ad1a6 100644
--- a/null_stream.cpp
+++ b/null_stream.cpp
@@ -22,7 +22,6 @@
#include "pchfile.hpp"
#include "null_stream.hpp"
-#include "uncopyable_lmi.hpp"
#include <ostream>
#include <streambuf>
@@ -40,8 +39,7 @@
template<typename CharType, typename traits = std::char_traits<CharType>>
class dev_null_stream_buffer
- :public std::streambuf
- ,private lmi::uncopyable<dev_null_stream_buffer<CharType,traits>>
+ :public std::streambuf
{
public:
dev_null_stream_buffer()
@@ -51,6 +49,9 @@ class dev_null_stream_buffer
~dev_null_stream_buffer() override = default;
private:
+ dev_null_stream_buffer(dev_null_stream_buffer const&) = delete;
+ dev_null_stream_buffer& operator=(dev_null_stream_buffer const&) = delete;
+
int_type overflow(int_type c) override
{
setp(buffer_, buffer_ + buffer_size_);
diff --git a/outlay.hpp b/outlay.hpp
index ddc4a33..350b8b1 100644
--- a/outlay.hpp
+++ b/outlay.hpp
@@ -25,14 +25,12 @@
#include "config.hpp"
#include "mc_enum_type_enums.hpp"
-#include "uncopyable_lmi.hpp"
#include <vector>
class yare_input;
class modal_outlay final
- :private lmi::uncopyable <modal_outlay>
{
friend class AccountValue;
@@ -51,7 +49,8 @@ class modal_outlay final
std::vector<double> const& withdrawals () const;
private:
- modal_outlay();
+ modal_outlay(modal_outlay const&) = delete;
+ modal_outlay& operator=(modal_outlay const&) = delete;
// Not yet used, but needed for MEC avoidance.
void set_external_1035_amount(double z);
diff --git a/policy_view.hpp b/policy_view.hpp
index d52b6ec..6e6ad60 100644
--- a/policy_view.hpp
+++ b/policy_view.hpp
@@ -26,8 +26,6 @@
#include "product_editor.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <map>
#include <string>
@@ -35,8 +33,7 @@ class PolicyDocument;
class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
class PolicyView final
- :public ProductEditorView
- ,private lmi::uncopyable <PolicyView>
+ :public ProductEditorView
{
public:
PolicyView();
@@ -49,6 +46,9 @@ class PolicyView final
static char const* resource_file_name();
private:
+ PolicyView(PolicyView const&) = delete;
+ PolicyView& operator=(PolicyView const&) = delete;
+
PolicyDocument& document() const;
// ViewEx required implementation.
diff --git a/premium_tax.hpp b/premium_tax.hpp
index 636f381..4d5d543 100644
--- a/premium_tax.hpp
+++ b/premium_tax.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "mc_enum_type_enums.hpp" // mcenum_state
-#include "uncopyable_lmi.hpp"
#include <vector>
@@ -85,7 +84,6 @@ class stratified_charges;
/// start_new_year() should be improved as noted in its documentation.
class premium_tax final
- :private lmi::uncopyable <premium_tax>
{
public:
premium_tax
@@ -112,6 +110,9 @@ class premium_tax final
bool is_tiered () const;
private:
+ premium_tax(premium_tax const&) = delete;
+ premium_tax& operator=(premium_tax const&) = delete;
+
void test_consistency() const;
double ascertain_maximum_load_rate(stratified_charges const& strata) const;
diff --git a/product_data.hpp b/product_data.hpp
index e0bd6d1..f9bbe31 100644
--- a/product_data.hpp
+++ b/product_data.hpp
@@ -26,7 +26,6 @@
#include "any_member.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_serializable.hpp"
#include <string>
@@ -78,9 +77,8 @@ template<> struct deserialized<product_data>
/// Implicitly-declared special member functions do the right thing.
class LMI_SO product_data final
- :private lmi::uncopyable <product_data>
- ,public xml_serializable <product_data>
- ,public MemberSymbolTable <product_data>
+ :public xml_serializable <product_data>
+ ,public MemberSymbolTable <product_data>
{
typedef deserialized<product_data>::value_type value_type;
@@ -98,6 +96,8 @@ class LMI_SO product_data final
private:
product_data();
+ product_data(product_data const&) = delete;
+ product_data& operator=(product_data const&) = delete;
void ascribe_members();
diff --git a/product_editor.hpp b/product_editor.hpp
index 0172c5f..14e0b17 100644
--- a/product_editor.hpp
+++ b/product_editor.hpp
@@ -26,8 +26,6 @@
#include "view_ex.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/docview.h>
#include <string>
@@ -44,8 +42,7 @@ class WXDLLIMPEXP_FWD_CORE wxWindow;
/// by the view portion of the document/view classes pair.
class ProductEditorDocument
- :public wxDocument
- ,private lmi::uncopyable<ProductEditorDocument>
+ :public wxDocument
{
public:
ProductEditorDocument();
@@ -56,6 +53,9 @@ class ProductEditorDocument
virtual void WriteDocument(std::string const& filename) = 0;
private:
+ ProductEditorDocument(ProductEditorDocument const&) = delete;
+ ProductEditorDocument& operator=(ProductEditorDocument const&) = delete;
+
ProductEditorView& PredominantView() const;
// wxDocument overrides.
@@ -68,8 +68,7 @@ class ProductEditorDocument
/// Common base for all product editor view classes.
class ProductEditorView
- :public ViewEx
- ,private lmi::uncopyable<ProductEditorView>
+ :public ViewEx
{
friend class ProductEditorDocument;
@@ -80,14 +79,17 @@ class ProductEditorView
protected:
virtual bool IsModified() const = 0;
virtual void DiscardEdits() = 0;
+
+ private:
+ ProductEditorView(ProductEditorView const&) = delete;
+ ProductEditorView& operator=(ProductEditorView const&) = delete;
};
/// This class is a common base for TierView and DatabaseView classes.
/// It contains and lays out common widgets.
class TreeGridViewBase
- :public ProductEditorView
- ,private lmi::uncopyable<TreeGridViewBase>
+ :public ProductEditorView
{
public:
TreeGridViewBase();
@@ -107,6 +109,9 @@ class TreeGridViewBase
virtual void SetupControls() = 0;
private:
+ TreeGridViewBase(TreeGridViewBase const&) = delete;
+ TreeGridViewBase& operator=(TreeGridViewBase const&) = delete;
+
// ViewEx required implementation.
wxWindow* CreateChildWindow() override;
diff --git a/progress_meter.hpp b/progress_meter.hpp
index 6ec5ffc..4c2fd0c 100644
--- a/progress_meter.hpp
+++ b/progress_meter.hpp
@@ -191,7 +191,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include <iosfwd>
#include <memory> // std::shared_ptr
@@ -200,7 +199,6 @@
std::ostringstream& LMI_SO progress_meter_unit_test_stream();
class LMI_SO progress_meter
- :private lmi::uncopyable<progress_meter>
{
public:
enum enum_display_mode
@@ -237,6 +235,9 @@ class LMI_SO progress_meter
virtual void culminate_ui () = 0;
private:
+ progress_meter(progress_meter const&) = delete;
+ progress_meter& operator=(progress_meter const&) = delete;
+
int count_;
int max_count_;
std::string title_;
diff --git a/rate_table.cpp b/rate_table.cpp
index 8155648..97d0158 100644
--- a/rate_table.cpp
+++ b/rate_table.cpp
@@ -835,9 +835,10 @@ namespace soa_v3_format
{
class table_impl final
- :private lmi::uncopyable <table_impl>
{
public:
+ table_impl() = default;
+
// Load the table data from the stream containing the table data in either
// binary or text representation.
//
@@ -860,6 +861,9 @@ class table_impl final
unsigned long compute_hash_value() const;
private:
+ table_impl(table_impl const&) = delete;
+ table_impl& operator=(table_impl const&) = delete;
+
// Helper methods for IO: all of them throw std::runtime_error on failure
// and mention the field name in the error message.
//
@@ -2346,7 +2350,6 @@ bool table::operator==(table const& other) const
}
class database_impl final
- :private lmi::uncopyable <database_impl>
{
public:
static fs::path get_index_path(fs::path const& path)
@@ -2372,6 +2375,9 @@ class database_impl final
void save(std::ostream& index_os, std::ostream& data_os);
private:
+ database_impl(database_impl const&) = delete;
+ database_impl& operator=(database_impl const&) = delete;
+
// An index record is composed of:
//
// - 4 byte table number
diff --git a/rate_table.hpp b/rate_table.hpp
index e755358..5ec9ddd 100644
--- a/rate_table.hpp
+++ b/rate_table.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <boost/filesystem/path.hpp>
#include <cstddef> // std::size_t
@@ -116,7 +114,6 @@ class table
/// locate a table by its number.
class database final
- :private lmi::uncopyable <database>
{
public:
// Check if a database at the given path exists.
@@ -145,6 +142,8 @@ class database final
// for as long as it needs it.
database(std::istream& index_is, shared_ptr<std::istream> data_is);
+ ~database();
+
// table access by index, only useful for iterating over all of them (using
// iterators could be an alternative approach, but would be heavier without
// providing much gain).
@@ -181,9 +180,10 @@ class database final
void save(fs::path const& path);
void save(std::ostream& index_os, std::ostream& data_os);
- ~database();
-
private:
+ database(database const&) = delete;
+ database& operator=(database const&) = delete;
+
database_impl* const impl_;
};
diff --git a/rate_table_test.cpp b/rate_table_test.cpp
index bdb6b12..a965ff5 100644
--- a/rate_table_test.cpp
+++ b/rate_table_test.cpp
@@ -27,7 +27,6 @@
#include "miscellany.hpp"
#include "path_utility.hpp"
#include "test_tools.hpp"
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/operations.hpp>
@@ -87,7 +86,6 @@ class std_out_redirector
// Class ensuring that the file with the given name is removed when the test
// ends, whether it succeeds or fails.
class test_file_eraser
- :private lmi::uncopyable<test_file_eraser>
{
public:
explicit test_file_eraser(fs::path const& path)
@@ -112,6 +110,9 @@ class test_file_eraser
}
private:
+ test_file_eraser(test_file_eraser const&) = delete;
+ test_file_eraser& operator=(test_file_eraser const&) = delete;
+
fs::path path_;
};
} // Unnamed namespace.
diff --git a/rounding_rules.cpp b/rounding_rules.cpp
index cbb35c8..fb0dc5d 100644
--- a/rounding_rules.cpp
+++ b/rounding_rules.cpp
@@ -137,7 +137,7 @@ rounding_style rounding_parameters::raw_style() const
return style_.value();
}
-/// Private default ctor.
+/// Private default ctor for friend class and write_rounding_files().
rounding_rules::rounding_rules()
:round_specamt_ (0, r_upward , "")
diff --git a/rounding_rules.hpp b/rounding_rules.hpp
index 957eaea..a1e74ea 100644
--- a/rounding_rules.hpp
+++ b/rounding_rules.hpp
@@ -28,7 +28,6 @@
#include "mc_enum.hpp"
#include "mc_enum_types.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_serializable.hpp"
#include <string>
@@ -89,9 +88,8 @@ class LMI_SO rounding_parameters final
/// The 7702 and 7702A interest rate must be rounded up, if at all.
class LMI_SO rounding_rules final
- :private lmi::uncopyable <rounding_rules>
- ,public xml_serializable <rounding_rules>
- ,public MemberSymbolTable <rounding_rules>
+ :public xml_serializable <rounding_rules>
+ ,public MemberSymbolTable <rounding_rules>
{
friend class RoundingDocument;
@@ -107,6 +105,8 @@ class LMI_SO rounding_rules final
private:
rounding_rules();
+ rounding_rules(rounding_rules const&) = delete;
+ rounding_rules& operator=(rounding_rules const&) = delete;
void ascribe_members();
diff --git a/rounding_view.hpp b/rounding_view.hpp
index 9f388b1..582c8dd 100644
--- a/rounding_view.hpp
+++ b/rounding_view.hpp
@@ -26,16 +26,13 @@
#include "product_editor.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <map>
class RoundingButtons;
class RoundingDocument;
class RoundingView final
- :public ProductEditorView
- ,private lmi::uncopyable <RoundingView>
+ :public ProductEditorView
{
public:
RoundingView();
@@ -48,6 +45,9 @@ class RoundingView final
static char const* resource_file_name();
private:
+ RoundingView(RoundingView const&) = delete;
+ RoundingView& operator=(RoundingView const&) = delete;
+
RoundingDocument& document() const;
// ViewEx required implementation.
diff --git a/single_cell_document.hpp b/single_cell_document.hpp
index 6333c68..def610b 100644
--- a/single_cell_document.hpp
+++ b/single_cell_document.hpp
@@ -26,14 +26,12 @@
#include "input.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_lmi_fwd.hpp"
#include <iosfwd>
#include <string>
class LMI_SO single_cell_document final
- :private lmi::uncopyable <single_cell_document>
{
friend class IllustrationDocument;
friend class IllustrationView;
@@ -51,6 +49,9 @@ class LMI_SO single_cell_document final
void write(std::ostream&) const;
private:
+ single_cell_document(single_cell_document const&) = delete;
+ single_cell_document& operator=(single_cell_document const&) = delete;
+
void parse(xml_lmi::dom_parser const&);
int class_version() const;
diff --git a/skeleton.hpp b/skeleton.hpp
index 4654401..382338d 100644
--- a/skeleton.hpp
+++ b/skeleton.hpp
@@ -34,8 +34,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/app.h>
#include <wx/timer.h>
@@ -52,8 +50,7 @@ class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame;
class WXDLLIMPEXP_FWD_CORE wxMenuBar;
class Skeleton
- : public wxApp
- , private lmi::uncopyable <Skeleton>
+ :public wxApp
{
public:
Skeleton();
@@ -78,6 +75,9 @@ class Skeleton
bool OnInit () override;
private:
+ Skeleton(Skeleton const&) = delete;
+ Skeleton& operator=(Skeleton const&) = delete;
+
wxMenuBar* AdjustMenus(wxMenuBar*);
void InitDocManager ();
diff --git a/test_coding_rules.cpp b/test_coding_rules.cpp
index 143cb64..a4324f0 100644
--- a/test_coding_rules.cpp
+++ b/test_coding_rules.cpp
@@ -25,7 +25,6 @@
#include "istream_to_string.hpp"
#include "main_common.hpp"
#include "miscellany.hpp" // lmi_array_size(), split_into_lines()
-#include "uncopyable_lmi.hpp"
#include <boost/filesystem/convenience.hpp> // fs::extension()
#include <boost/filesystem/fstream.hpp>
@@ -82,7 +81,6 @@ enum enum_kingdom
};
class file final
- :private lmi::uncopyable <file>
{
public:
explicit file(std::string const& file_path);
@@ -100,6 +98,9 @@ class file final
std::string const& data () const {return data_; }
private:
+ file(file const&) = delete;
+ file& operator=(file const&) = delete;
+
fs::path path_;
std::string full_name_;
std::string leaf_name_;
diff --git a/text_view.hpp b/text_view.hpp
index 53205a0..a17b285 100644
--- a/text_view.hpp
+++ b/text_view.hpp
@@ -34,8 +34,6 @@
#include "view_ex.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/defs.h> // wx shared-library 'attributes'
class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
@@ -49,8 +47,7 @@ class WXDLLIMPEXP_FWD_CORE wxTextCtrl;
/// model for some other feature someday.
class TextEditView final
- :public ViewEx
- ,private lmi::uncopyable <TextEditView>
+ :public ViewEx
{
friend class TextEditDocument;
@@ -59,6 +56,9 @@ class TextEditView final
~TextEditView() override;
private:
+ TextEditView(TextEditView const&) = delete;
+ TextEditView& operator=(TextEditView const&) = delete;
+
// ViewEx required implementation.
wxWindow* CreateChildWindow() override;
char const* icon_xrc_resource () const override;
diff --git a/tier_view.hpp b/tier_view.hpp
index 591dd53..d7d28a3 100644
--- a/tier_view.hpp
+++ b/tier_view.hpp
@@ -26,8 +26,6 @@
#include "product_editor.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <memory> // std::shared_ptr
class TierDocument;
@@ -35,14 +33,16 @@ class TierTableAdapter;
class WXDLLIMPEXP_FWD_CORE wxTreeEvent;
class TierView final
- :public TreeGridViewBase
- ,private lmi::uncopyable <TierView>
+ :public TreeGridViewBase
{
public:
TierView();
~TierView() override;
private:
+ TierView(TierView const&) = delete;
+ TierView& operator=(TierView const&) = delete;
+
// ViewEx required implementation.
char const* icon_xrc_resource () const override;
char const* menubar_xrc_resource() const override;
diff --git a/timer.hpp b/timer.hpp
index 76d98fa..69e72b0 100644
--- a/timer.hpp
+++ b/timer.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "so_attributes.hpp"
-#include "uncopyable_lmi.hpp"
#if defined LMI_POSIX
# include <sys/time.h> // gettimeofday()
@@ -60,7 +59,6 @@ void lmi_sleep(unsigned int seconds);
/// make your own decision about that rationale.
class LMI_SO Timer
- :private lmi::uncopyable<Timer>
{
friend class TimerTest;
template<typename F> friend class AliquotTimer;
@@ -77,6 +75,9 @@ class LMI_SO Timer
double elapsed_seconds() const;
private:
+ Timer(Timer const&) = delete;
+ Timer& operator=(Timer const&) = delete;
+
elapsed_t calibrate();
void start();
diff --git a/transferor.hpp b/transferor.hpp
index 929d9d4..4a9866c 100644
--- a/transferor.hpp
+++ b/transferor.hpp
@@ -32,8 +32,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/validate.h>
#include <string>
@@ -114,8 +112,7 @@ enum transfer_direction
/// overridden here to return true instead.
class Transferor
- :public wxValidator
- ,private lmi::uncopyable<Transferor>
+ :public wxValidator
{
public:
Transferor(std::string& data, std::string const& name);
@@ -130,6 +127,9 @@ class Transferor
std::string const& name() const;
private:
+ Transferor(Transferor const&) = delete;
+ Transferor& operator=(Transferor const&) = delete;
+
bool PerformTransfer(transfer_direction);
std::string& data_;
diff --git a/uncopyable_lmi.hpp b/uncopyable_lmi.hpp
deleted file mode 100644
index 1c13679..0000000
--- a/uncopyable_lmi.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (C) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Gregory W.
Chicares.
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2 as
-// published by the Free Software Foundation.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software Foundation,
-// Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-//
-// http://savannah.nongnu.org/projects/lmi
-// email: <address@hidden>
-// snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
-
-#ifndef uncopyable_lmi_hpp
-#define uncopyable_lmi_hpp
-
-#include "config.hpp"
-
-#include <type_traits>
-
-/// Forbid compiler to generate copy and assignment functions.
-///
-/// This implementation is an original work. The idea of a mixin with
-/// private copy and assignment members is very old and of uncertain
-/// provenance. The idea of making that mixin a template seems to have
-/// been suggested first by Cacciola:
-/// http://lists.boost.org/Archives/boost/2001/09/16912.php
-/// http://lists.boost.org/Archives/boost/2001/09/17385.php
-///
-/// This class is often seen in a non-template guise, but consider:
-///
-/// class B0 : private Uncopyable {};
-/// class B1 : private Uncopyable {};
-/// class D : public B0, public B1 {};
-///
-/// The derived class has two distinct copies of Uncopyable, to which
-/// the empty base class optimization cannot be applied:
-///
http://groups.google.com/group/comp.lang.c++.moderated/msg/6cc884d20b336d08
-/// Rewriting that example to use virtual inheritance:
-///
-/// class B0 : virtual private Uncopyable {};
-/// class B1 : virtual private Uncopyable {};
-/// class D : public B0, public B1 {};
-///
-/// is likely to introduce its own efficiency issues:
-/// http://lists.boost.org/Archives/boost/2001/09/17391.php
-///
-/// Even where such inefficiencies don't matter, the template version
-/// is preferable for its clarity. Consider:
-///
-// class Uncopyable /* non-template implementation */;
-/// class B0 : private Uncopyable {};
-/// class B1 : private Uncopyable {};
-/// class D : private Uncopyable, public B0, public B1 {};
-///
-/// Deriving class D explicitly from Uncopyable serves two purposes:
-/// it prevents the compiler from implicitly defining a copy ctor or
-/// a copy assignment operator; and it also documents that the lack of
-/// explicit declarations for those special member functions is not an
-/// oversight. As self-enforcing documentation, it belongs in class D.
-/// However, this example is likely to elicit an ambiguity warning--a
-/// Bad Thing when one strives to write code that compiles without any
-/// warnings.
-///
-/// Such warnings may be avoided by virtual inheritance, as in the
-/// second example above--though that's inefficient, as already noted.
-/// It's also not ideal for documenting the derived class, because
-/// 'virtual' belongs in the base classes:
-/// http://www.parashift.com/c++-faq-lite/multiple-inheritance.html#faq-25.9
-/// Adding a new class later, e.g.:
-/// class E : private Uncopyable, public D {};
-/// would require changing D's inheritance to virtual, yet D and E are
-/// likely to be declared in different source files.
-///
-/// The present class does requires a template parameter (which is
-/// reasonably constrained to name the class rendered uncopyable):
-///
-/// class B0 : private uncopyable<B0> {};
-/// class B1 : private uncopyable<B1> {};
-/// class D : private uncopyable<D>, public B0, public B1 {};
-///
-/// but its clarity and efficiency make it the least objectionable
-/// option.
-
-namespace lmi
-{
-template<typename T>
-class uncopyable
-{
- protected:
- uncopyable() = default;
- ~uncopyable()
- {
- static_assert(std::is_base_of<uncopyable<T>,T>::value, "");
- }
-
- private:
- uncopyable(uncopyable const&);
- uncopyable& operator=(uncopyable const&);
-};
-} // namespace lmi
-
-// If lmi provided unit tests that deliberately fail to compile, then
-// this could be used:
-//
-// #include "uncopyable_lmi.hpp"
-//
-// class X : private lmi::uncopyable<X> {};
-//
-// int main()
-// {
-// X x;
-// X y(x); // Error: cannot copy.
-// x = y; // Error: cannot assign.
-// }
-
-#endif // uncopyable_lmi_hpp
-
diff --git a/view_ex.hpp b/view_ex.hpp
index 98ec644..4588c5e 100644
--- a/view_ex.hpp
+++ b/view_ex.hpp
@@ -71,8 +71,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <wx/docview.h>
#include <string>
@@ -84,8 +82,7 @@ class WXDLLIMPEXP_FWD_CORE wxIcon;
class WXDLLIMPEXP_FWD_CORE wxMenuBar;
class ViewEx
- :public wxView
- ,private lmi::uncopyable<ViewEx>
+ :public wxView
{
public:
ViewEx();
@@ -103,6 +100,9 @@ class ViewEx
bool DoOnCreate(wxDocument* doc, long int flags);
private:
+ ViewEx(ViewEx const&) = delete;
+ ViewEx& operator=(ViewEx const&) = delete;
+
// Pure virtuals.
virtual wxWindow* CreateChildWindow() = 0;
virtual char const* icon_xrc_resource () const = 0;
diff --git a/wx_test_benchmark_census.cpp b/wx_test_benchmark_census.cpp
index 2b4190b..556d28a 100644
--- a/wx_test_benchmark_census.cpp
+++ b/wx_test_benchmark_census.cpp
@@ -22,7 +22,6 @@
#include "pchfile_wx.hpp"
#include "assert_lmi.hpp"
-#include "uncopyable_lmi.hpp"
#include "wx_test_case.hpp"
#include "wx_test_statusbar.hpp"
@@ -41,7 +40,6 @@ namespace
{
class census_benchmark
- :private lmi::uncopyable<census_benchmark>
{
public:
explicit census_benchmark(fs::path const& path)
@@ -57,6 +55,12 @@ class census_benchmark
wxYield();
}
+ ~census_benchmark()
+ {
+ // Close the census window opened in the ctor itself.
+ close_window();
+ }
+
void time_operation
(char const* operation
,char key
@@ -91,13 +95,10 @@ class census_benchmark
z.Char('l', wxMOD_CONTROL); // "File|Close"
}
- ~census_benchmark()
- {
- // Close the census window opened in the ctor itself.
- close_window();
- }
-
private:
+ census_benchmark(census_benchmark const&) = delete;
+ census_benchmark& operator=(census_benchmark const&) = delete;
+
wxStatusBar& status_;
wxString const name_;
};
diff --git a/wx_test_case.hpp b/wx_test_case.hpp
index afbc8a9..5c62f66 100644
--- a/wx_test_case.hpp
+++ b/wx_test_case.hpp
@@ -24,15 +24,12 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <boost/filesystem/path.hpp>
/// Base class for the test case objects.
///
/// It is only supposed to be used by LMI_WX_TEST_CASE macro and not directly.
class wx_base_test_case
- :private lmi::uncopyable<wx_base_test_case>
{
public:
/// The function actually executing the test code.
@@ -96,6 +93,10 @@ class wx_base_test_case
explicit wx_base_test_case(char const* name);
char const* const m_name;
+
+ private:
+ wx_base_test_case(wx_base_test_case const&) = delete;
+ wx_base_test_case& operator=(wx_base_test_case const&) = delete;
};
/// Define a test function and register it with the application tester.
diff --git a/wx_test_document.hpp b/wx_test_document.hpp
index 0f40420..0b50e0d 100644
--- a/wx_test_document.hpp
+++ b/wx_test_document.hpp
@@ -25,7 +25,6 @@
#include "config.hpp"
#include "mvc_controller.hpp"
-#include "uncopyable_lmi.hpp"
#include <wx/log.h>
#include <wx/testing.h>
@@ -54,7 +53,6 @@ wxWindow* wx_test_focus_controller_child(MvcController&
dialog, char const* name
/// to close().
class wx_test_document_base
- :private lmi::uncopyable<wx_test_document_base>
{
public:
wx_test_document_base()
@@ -119,6 +117,9 @@ class wx_test_document_base
void set_opened() { opened_ = true; }
private:
+ wx_test_document_base(wx_test_document_base const&) = delete;
+ wx_test_document_base& operator=(wx_test_document_base const&) = delete;
+
// Common part of different close() methods.
void do_close()
{
diff --git a/wx_test_output.hpp b/wx_test_output.hpp
index b20680a..751be08 100644
--- a/wx_test_output.hpp
+++ b/wx_test_output.hpp
@@ -24,8 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
-
#include <boost/filesystem/operations.hpp>
/// Class helping to check for the expected output file existence.
@@ -35,7 +33,6 @@
/// later. It also cleans up the file when it is destroyed.
class output_file_existence_checker
- :private lmi::uncopyable<output_file_existence_checker>
{
public:
output_file_existence_checker(fs::path const& path)
@@ -44,11 +41,6 @@ class output_file_existence_checker
fs::remove(path_);
}
- bool exists() const
- {
- return fs::exists(path_);
- }
-
~output_file_existence_checker()
{
try
@@ -60,7 +52,15 @@ class output_file_existence_checker
}
}
+ bool exists() const
+ {
+ return fs::exists(path_);
+ }
+
private:
+ output_file_existence_checker(output_file_existence_checker const&) =
delete;
+ output_file_existence_checker& operator=(output_file_existence_checker
const&) = delete;
+
fs::path path_;
};
diff --git a/wx_test_validate_output.cpp b/wx_test_validate_output.cpp
index 58fcdfb..7507089 100644
--- a/wx_test_validate_output.cpp
+++ b/wx_test_validate_output.cpp
@@ -25,7 +25,6 @@
#include "configurable_settings.hpp"
#include "mvc_controller.hpp"
#include "path_utility.hpp"
-#include "uncopyable_lmi.hpp"
#include "wx_test_case.hpp"
#include "wx_test_new.hpp"
#include "wx_test_output.hpp"
diff --git a/xml_lmi.hpp b/xml_lmi.hpp
index f5a2f4e..a7909b7 100644
--- a/xml_lmi.hpp
+++ b/xml_lmi.hpp
@@ -24,7 +24,6 @@
#include "config.hpp"
-#include "uncopyable_lmi.hpp"
#include "xml_lmi_fwd.hpp"
#include <xmlwrapp/node.h> // xml::element
@@ -39,7 +38,6 @@
namespace xml_lmi
{
class dom_parser
- :private lmi::uncopyable<dom_parser>
{
typedef xml::tree_parser DomParser;
@@ -53,12 +51,14 @@ namespace xml_lmi
xml::element const& root_node(std::string const& expected_name) const;
private:
+ dom_parser(dom_parser const&) = delete;
+ dom_parser& operator=(dom_parser const&) = delete;
+
std::string error_context_;
std::unique_ptr<DomParser> parser_;
};
class xml_document
- :private lmi::uncopyable<xml_document>
{
public:
xml_document(std::string const& root_node_name);
@@ -73,6 +73,9 @@ namespace xml_lmi
void add_comment(std::string const&);
private:
+ xml_document(xml_document const&) = delete;
+ xml_document& operator=(xml_document const&) = delete;
+
std::string error_context_;
std::unique_ptr<Document> const document_;
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [lmi] master fd2c4e6: Replace lmi::uncopyable with "=delete" special member functions,
Greg Chicares <=