]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/convert/test/lcast_converter.cpp
1 // Boost.Convert test and usage example
2 // Copyright (c) 2009-2016 Vladimir Batov.
3 // Use, modification and distribution are subject to the Boost Software License,
4 // Version 1.0. See http://www.boost.org/LICENSE_1_0.txt.
8 #ifdef BOOST_CONVERT_INTEL_SFINAE_BROKEN
9 int main(int, char const* []) { return 0; }
12 #include <boost/convert.hpp>
13 #include <boost/convert/lexical_cast.hpp>
14 #include <boost/detail/lightweight_test.hpp>
19 struct boost::cnv::by_default
: public boost::cnv::lexical_cast
{};
25 char const* str
[] = { "not", "1 2", " 33", "44 ", "0x11", "7 + 5" };
26 int const size
= sizeof(str
) / sizeof(str
[0]);
28 for (int k
= 0; k
< size
; ++k
)
30 boost::optional
<int> const res
= convert
<int>(str
[k
]);
31 bool const failed
= !res
;
35 printf("test::cnv::invalid() failed for: <%s><%d>\n", str
[k
], res
.value());
45 // printf("100.00 %s\n", convert<string>( 99.999).value().c_str());
46 // printf( "99.95 %s\n", convert<string>( 99.949).value().c_str());
47 // printf("-99.95 %s\n", convert<string>(-99.949).value().c_str());
48 // printf( "99.9 %s\n", convert<string>( 99.949).value().c_str());
49 // printf( "1.00 %s\n", convert<string>( 0.999).value().c_str());
50 // printf( "-1.00 %s\n", convert<string>( -0.999).value().c_str());
51 // printf( "0.95 %s\n", convert<string>( 0.949).value().c_str());
52 // printf( "-0.95 %s\n", convert<string>( -0.949).value().c_str());
53 // printf( "1.9 %s\n", convert<string>( 1.949).value().c_str());
54 // printf( "-1.9 %s\n", convert<string>( -1.949).value().c_str());
58 main(int, char const* [])
60 string
const not_int_str
= "not an int";
61 string
const std_str
= "-11";
62 char const* const c_str
= "-12";
63 int const v00
= convert
<int>(not_int_str
).value_or(-1);
64 int const v01
= convert
<int>( std_str
).value_or(-1);
65 int const v02
= convert
<int>( c_str
).value_or(-1);
67 BOOST_TEST(v00
== -1); // Failed conversion. No throw
68 BOOST_TEST(v01
== -11);
69 BOOST_TEST(v02
== -12);
74 return boost::report_errors();