diff --git a/include/boost/static_string/static_string.hpp b/include/boost/static_string/static_string.hpp index 12a3ab1..60dae3b 100644 --- a/include/boost/static_string/static_string.hpp +++ b/include/boost/static_string/static_string.hpp @@ -1319,7 +1319,7 @@ public: basic_static_string& assign(const basic_static_string& s) noexcept { - if (this == &s) + if (data() == s.data()) return *this; return assign_unchecked(s.data(), s.size()); } diff --git a/test/static_string.cpp b/test/static_string.cpp index 9f8541c..5288b45 100644 --- a/test/static_string.cpp +++ b/test/static_string.cpp @@ -674,6 +674,13 @@ testAssignment() s_long.assign(s_long.data() + 2, 8); BOOST_TEST(s_long == "rem ipsu"); + + // issue #41 + { + boost::static_strings::static_string<0> a; + auto b = a; + BOOST_TEST(b == ""); + } } // done