forked from boostorg/endian
Make endian_buffer::value_ public when BOOST_ENDIAN_NO_CTORS is defined; add test
This commit is contained in:
@ -218,7 +218,9 @@ namespace endian
|
||||
template< BOOST_SCOPED_ENUM(order) Order, class T, std::size_t n_bits >
|
||||
class endian_buffer<Order, T, n_bits, align::no>
|
||||
{
|
||||
private:
|
||||
#ifdef BOOST_ENDIAN_NO_CTORS
|
||||
public:
|
||||
#endif
|
||||
|
||||
BOOST_STATIC_ASSERT( (n_bits/8)*8 == n_bits );
|
||||
|
||||
|
@ -108,3 +108,5 @@ run-ni endian_reverse_test4.cpp ;
|
||||
|
||||
run endian_reverse_test5.cpp ;
|
||||
run-ni endian_reverse_test5.cpp ;
|
||||
|
||||
run packed_buffer_test.cpp ;
|
||||
|
33
test/packed_buffer_test.cpp
Normal file
33
test/packed_buffer_test.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
// Copyright 2020 Peter Dimov
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#if !defined(__GNUC__)
|
||||
|
||||
#include <boost/config/pragma_message.hpp>
|
||||
BOOST_PRAGMA_MESSAGE( "Skipping test because __GNUC__ is not defined" )
|
||||
int main() {}
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_ENDIAN_FORCE_PODNESS
|
||||
#define BOOST_ENDIAN_NO_CTORS
|
||||
#include <boost/endian/buffers.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
|
||||
using namespace boost::endian;
|
||||
|
||||
struct X
|
||||
{
|
||||
big_uint16_buf_t a;
|
||||
double b;
|
||||
little_uint16_buf_t c;
|
||||
} __attribute__((packed));
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST_EQ( sizeof( X ), 12 );
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user