diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 07d771a..fdaef72 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -37,6 +37,7 @@ run string_view_test_io.cpp ; run value_init_test.cpp ; run value_init_test2.cpp ; +run value_init_test3.cpp ; run value_init_workaround_test.cpp ; run initialized_test.cpp ; compile-fail value_init_test_fail1.cpp ; diff --git a/test/value_init_test3.cpp b/test/value_init_test3.cpp new file mode 100644 index 0000000..d90834d --- /dev/null +++ b/test/value_init_test3.cpp @@ -0,0 +1,40 @@ +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +#if __cplusplus >= 201103L || ( defined(BOOST_MSVC) && BOOST_MSVC >= 1900 ) + +struct X +{ + int a; + char b; +}; + +struct Y: boost::value_initialized +{ + char c = 42; +}; + +int main() +{ + Y y; + + BOOST_TEST_EQ( y.data().a, 0 ); + BOOST_TEST_EQ( y.data().b, 0 ); + BOOST_TEST_EQ( y.c, 42 ); + + return boost::report_errors(); +} + +#else + +BOOST_PRAGMA_MESSAGE( "Skipping test because compiler doesn't support in-class member initializers" ) + +int main() {} + +#endif