1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
// Copyright 2022 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/container_hash/is_described_class.hpp>
#include <boost/describe/class.hpp>
#include <boost/core/lightweight_test_trait.hpp>
#include <string>
struct X1
{
};
struct X2
{
int m;
};
struct Y1
{
};
BOOST_DESCRIBE_STRUCT( Y1, (), () )
struct Y2: Y1
{
int m;
};
BOOST_DESCRIBE_STRUCT( Y2, (Y1), (m) )
int main()
{
using boost::container_hash::is_described_class;
BOOST_TEST_TRAIT_FALSE((is_described_class<void>));
BOOST_TEST_TRAIT_FALSE((is_described_class<int>));
BOOST_TEST_TRAIT_FALSE((is_described_class<X1>));
BOOST_TEST_TRAIT_FALSE((is_described_class<X2>));
BOOST_TEST_TRAIT_FALSE((is_described_class<int[2]>));
BOOST_TEST_TRAIT_FALSE((is_described_class<std::string>));
#if defined(BOOST_DESCRIBE_CXX14)
BOOST_TEST_TRAIT_TRUE((is_described_class<Y1>));
BOOST_TEST_TRAIT_TRUE((is_described_class<Y2>));
#else
BOOST_TEST_TRAIT_FALSE((is_described_class<Y1>));
BOOST_TEST_TRAIT_FALSE((is_described_class<Y2>));
#endif
return boost::report_errors();
}
|