diff --git a/include/boost/optional/optional.hpp b/include/boost/optional/optional.hpp index c0f10e1..715adb9 100644 --- a/include/boost/optional/optional.hpp +++ b/include/boost/optional/optional.hpp @@ -747,7 +747,7 @@ class optional_base : public optional_tag private : -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600) +#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1900)) void destroy_impl ( ) { m_storage.ptr_ref()->~T() ; m_initialized = false ; } #else void destroy_impl ( ) { m_storage.ref().T::~T() ; m_initialized = false ; } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 129dd49..edc2e14 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -43,6 +43,7 @@ import testing ; [ run optional_test_emplace.cpp ] [ run optional_test_minimum_requirements.cpp ] [ run optional_test_msvc_bug_workaround.cpp ] + [ run optional_test_member_T.cpp ] [ run optional_test_tc_base.cpp ] [ compile optional_test_sfinae_friendly_ctor.cpp ] [ compile-fail optional_test_ref_convert_assign_const_int_prevented.cpp ] diff --git a/test/optional_test_member_T.cpp b/test/optional_test_member_T.cpp new file mode 100644 index 0000000..325838d --- /dev/null +++ b/test/optional_test_member_T.cpp @@ -0,0 +1,44 @@ +// Copyright (C) 2014 Andrzej Krzemienski. +// +// Use, modification, and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org/lib/optional for documentation. +// +// You are welcome to contact the author at: +// akrzemi1@gmail.com + +#include "boost/optional/optional.hpp" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#include "boost/core/lightweight_test.hpp" + +struct Status +{ + enum T + { + DISCONNECTED, + CONNECTING, + CONNECTED, + }; + + T mValue; +}; + +void test_member_T() +{ + boost::optional x = Status(); + x->mValue = Status::CONNECTED; + + BOOST_TEST(x->mValue == Status::CONNECTED); +} + +int main() +{ + test_member_T(); + return boost::report_errors(); +}