optional/test/optional_test_fail_implicit_bool_convert.cpp
Marcel Raad c7cf80e5df Use BOOST_EXPLICIT_OPERATOR_BOOL for optional
I often have the problem that when I change a std::wstring to boost::optional<std::wstring> and the variable is used as a parameter with Boost.Format, the result silently changes from the string contents to "1".

This change prevents implicit conversion to bool if the compiler supports explicit conversion operators.
2014-04-26 15:26:37 +02:00

29 lines
693 B
C++

// 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.hpp"
//
// THIS TEST SHOULD FAIL TO COMPILE
//
#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
bool test_implicit_conversion_to_bool()
{
boost::optional<int> opt;
return opt;
}
#else
# error "Test skipped: this compiler does not support explicit conversion operators."
#endif