diff --git a/include/boost/locale/numpunct.hpp b/include/boost/locale/numpunct.hpp index 7921f831..77b277f2 100644 --- a/include/boost/locale/numpunct.hpp +++ b/include/boost/locale/numpunct.hpp @@ -9,10 +9,6 @@ #ifndef BOOST_LOCALE_NUMPUNCT_HPP_INCLUDED #define BOOST_LOCALE_NUMPUNCT_HPP_INCLUDED #include -#ifdef BOOST_MSVC -# pragma warning(push) -# pragma warning(disable : 4275 4251 4231 4660) -#endif #include #include @@ -20,11 +16,12 @@ namespace boost { namespace locale { template - class BOOST_LOCALE_DECL numpunct_base : public std::numpunct + class numpunct_base : public std::numpunct { typedef std::basic_string string_type; public: numpunct_base(size_t refs = 0) : std::numpunct(refs) {} + virtual ~numpunct_base(); string_type decimal_point_str() const { return do_decimal_point_str(); @@ -35,7 +32,7 @@ namespace boost { } protected: - virtual CharType do_decimal_point() const { + CharType do_decimal_point() const BOOST_OVERRIDE { string_type dec = do_decimal_point_str(); if (dec.size() > 1) { return '.'; @@ -49,7 +46,7 @@ namespace boost { return string_type(t, t + sizeof(t) - 1); } - virtual CharType do_thousands_sep() const { + CharType do_thousands_sep() const BOOST_OVERRIDE { string_type thous = do_thousands_sep_str(); if (thous.size() > 1) { return ','; @@ -63,18 +60,18 @@ namespace boost { return string_type(t, t + sizeof(t) - 1); } - virtual string_type do_truename() const { + virtual string_type do_truename() const BOOST_OVERRIDE { static const char t[] = "true"; return string_type(t, t + sizeof(t) - 1); } - virtual string_type do_falsename() const { + virtual string_type do_falsename() const BOOST_OVERRIDE { static const char t[] = "false"; return string_type(t, t + sizeof(t) - 1); } }; - template struct numpunct {}; + template struct numpunct; template<> struct numpunct : numpunct_base { numpunct (size_t refs = 0) : numpunct_base(refs) {} diff --git a/src/boost/locale/icu/numeric.cpp b/src/boost/locale/icu/numeric.cpp index 4ab7919d..5f5c5ada 100644 --- a/src/boost/locale/icu/numeric.cpp +++ b/src/boost/locale/icu/numeric.cpp @@ -381,13 +381,13 @@ struct icu_numpunct : public numpunct { } } protected: - virtual string_type do_decimal_point_str() const { + string_type do_decimal_point_str() const BOOST_OVERRIDE { return decimal_point_; } - virtual string_type do_thousands_sep_str() const { + string_type do_thousands_sep_str() const BOOST_OVERRIDE { return thousands_sep_; } - virtual std::string do_grouping() const { + std::string do_grouping() const BOOST_OVERRIDE { return grouping_; } diff --git a/src/boost/locale/posix/numeric.cpp b/src/boost/locale/posix/numeric.cpp index a205df7a..510ffbcd 100644 --- a/src/boost/locale/posix/numeric.cpp +++ b/src/boost/locale/posix/numeric.cpp @@ -423,11 +423,11 @@ class num_punct_posix : public numpunct { { s2=conv::to_utf(s1,nl_langinfo_l(CODESET,lc)); } - virtual string_type do_decimal_point_str() const + string_type do_decimal_point_str() const BOOST_OVERRIDE { return decimal_point_; } - virtual string_type do_thousands_sep_str() const + string_type do_thousands_sep_str() const BOOST_OVERRIDE { return thousands_sep_; } @@ -435,16 +435,6 @@ class num_punct_posix : public numpunct { { return grouping_; } - string_type do_truename() const BOOST_OVERRIDE - { - static const char t[]="true"; - return string_type(t,t+sizeof(t)-1); - } - string_type do_falsename() const BOOST_OVERRIDE - { - static const char t[]="false"; - return string_type(t,t+sizeof(t)-1); - } private: string_type decimal_point_; string_type thousands_sep_; diff --git a/src/boost/locale/shared/ids.cpp b/src/boost/locale/shared/ids.cpp index b41d041c..7acfb664 100644 --- a/src/boost/locale/shared/ids.cpp +++ b/src/boost/locale/shared/ids.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -25,16 +26,19 @@ namespace boost { std::locale::id converter::id; converter::~converter() {} std::locale::id base_message_format::id; + numpunct_base::~numpunct_base() {} std::locale::id converter::id; converter::~converter() {} std::locale::id base_message_format::id; + numpunct_base::~numpunct_base() {} #ifdef BOOST_LOCALE_ENABLE_CHAR16_T std::locale::id converter::id; converter::~converter() {} std::locale::id base_message_format::id; + numpunct_base::~numpunct_base() {} #endif @@ -43,6 +47,7 @@ namespace boost { std::locale::id converter::id; converter::~converter() {} std::locale::id base_message_format::id; + numpunct_base::~numpunct_base() {} #endif diff --git a/src/boost/locale/win32/numeric.cpp b/src/boost/locale/win32/numeric.cpp index 6789d13c..309f67ab 100644 --- a/src/boost/locale/win32/numeric.cpp +++ b/src/boost/locale/win32/numeric.cpp @@ -141,11 +141,11 @@ BOOST_LOCALE_END_CONST_CONDITION { s2=conv::from_utf(s1,"UTF-8"); } - virtual string_type do_decimal_point_str() const + string_type do_decimal_point_str() const BOOST_OVERRIDE { return decimal_point_; } - virtual string_type do_thousands_sep_str() const + string_type do_thousands_sep_str() const BOOST_OVERRIDE { return thousands_sep_; }