forked from boostorg/mp11
Test mp_for_each with a long list of types
This commit is contained in:
@@ -28,8 +28,15 @@ struct F
|
|||||||
CONSTEXPR14 void operator()( char ) { s = s * 10 + 3; }
|
CONSTEXPR14 void operator()( char ) { s = s * 10 + 3; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct G
|
||||||
|
{
|
||||||
|
std::size_t s;
|
||||||
|
CONSTEXPR14 void operator()( std::size_t i ) { s += i; }
|
||||||
|
};
|
||||||
|
|
||||||
using boost::mp11::mp_list;
|
using boost::mp11::mp_list;
|
||||||
using boost::mp11::mp_for_each;
|
using boost::mp11::mp_for_each;
|
||||||
|
using boost::mp11::mp_iota_c;
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
@@ -45,6 +52,22 @@ int main()
|
|||||||
|
|
||||||
BOOST_TEST_EQ( (mp_for_each<std::pair<int, short>>( F{0} ).s), 12 );
|
BOOST_TEST_EQ( (mp_for_each<std::pair<int, short>>( F{0} ).s), 12 );
|
||||||
|
|
||||||
|
#if BOOST_MP11_WORKAROUND( BOOST_MP11_MSVC, <= 1800 )
|
||||||
|
#else
|
||||||
|
|
||||||
|
using L = mp_iota_c<1024>;
|
||||||
|
std::size_t const R = 523776;
|
||||||
|
|
||||||
|
BOOST_TEST_EQ( (mp_for_each<L>( G{0} ).s), R );
|
||||||
|
|
||||||
|
{
|
||||||
|
G g{0};
|
||||||
|
mp_for_each<L>( g );
|
||||||
|
BOOST_TEST_EQ( g.s, R );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined( BOOST_MP11_NO_CONSTEXPR ) || ( !defined( __GLIBCXX__ ) && __cplusplus < 201400L )
|
#if defined( BOOST_MP11_NO_CONSTEXPR ) || ( !defined( __GLIBCXX__ ) && __cplusplus < 201400L )
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@@ -64,6 +87,9 @@ int main()
|
|||||||
constexpr auto r3 = mp_for_each<std::pair<int, short>>( F{0} );
|
constexpr auto r3 = mp_for_each<std::pair<int, short>>( F{0} );
|
||||||
static_assert( r3.s == 12, "r3.s == 12" );
|
static_assert( r3.s == 12, "r3.s == 12" );
|
||||||
|
|
||||||
|
constexpr auto r4 = mp_for_each<L>( G{0} );
|
||||||
|
static_assert( r4.s == R, "r4.s == R" );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
|
Reference in New Issue
Block a user