diff --git a/include/boost/system/detail/error_code.ipp b/include/boost/system/detail/error_code.ipp index c6dd5ba..dec55d3 100644 --- a/include/boost/system/detail/error_code.ipp +++ b/include/boost/system/detail/error_code.ipp @@ -390,7 +390,7 @@ namespace boost::detail::winapi::MAKELANGID_(boost::detail::winapi::LANG_NEUTRAL_, boost::detail::winapi::SUBLANG_DEFAULT_), // Default language &buf[0], - buf.size(), + static_cast(buf.size()), NULL ); diff --git a/include/boost/system/error_code.hpp b/include/boost/system/error_code.hpp index 0d64b2b..12191f9 100644 --- a/include/boost/system/error_code.hpp +++ b/include/boost/system/error_code.hpp @@ -210,6 +210,12 @@ namespace boost = system_category(); #endif +#ifdef BOOST_MSVC +#pragma warning(push) +// 'this' : used in base member initializer list +#pragma warning(disable: 4355) +#endif + // class error_category ------------------------------------------------// class error_category : public noncopyable @@ -328,6 +334,10 @@ namespace boost { return std::less()( this, &rhs ); } }; +#ifdef BOOST_MSVC +#pragma warning(pop) +#endif + // class error_condition ---------------------------------------------------------// // error_conditions are portable, error_codes are system or library specific diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 77e7ca6..22c2abd 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -122,3 +122,6 @@ project : : : shared @cxx11 : std_mismatch_test_shared_11 ] ; + +# Quick (CI) test +run quick.cpp ; diff --git a/test/quick.cpp b/test/quick.cpp new file mode 100644 index 0000000..882b834 --- /dev/null +++ b/test/quick.cpp @@ -0,0 +1,36 @@ + +// Copyright 2017 Peter Dimov. +// +// Distributed under 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 library home page at http://www.boost.org/libs/system + +#include +#include +#include + +int main() +{ + boost::system::error_category const & bt = boost::system::generic_category(); + + int ev = ENOENT; + + boost::system::error_code bc( ev, bt ); + + BOOST_TEST_EQ( bc.value(), ev ); + BOOST_TEST_EQ( &bc.category(), &bt ); + + boost::system::error_condition bn = bt.default_error_condition( ev ); + + BOOST_TEST_EQ( bn.value(), ev ); + BOOST_TEST_EQ( &bn.category(), &bt ); + + BOOST_TEST( bt.equivalent( ev, bn ) ); + + BOOST_TEST_EQ( bc, bn ); + + return boost::report_errors(); +}