// Copyright 2022 Dmitry Arkhipov (grisumbras@gmail.com) // // Distributed under the Boost Software License, Version 1.0. // // See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt #include #include #include template using has_size_t_difference_type = std::is_same; struct X { }; struct Y { using difference_type = int; }; struct Z { using difference_type = std::size_t; }; int main() { using boost::mp11::mp_valid_and_true; using boost::mp11::mp_valid_and_true_q; using boost::mp11::mp_quote; BOOST_TEST_TRAIT_FALSE((mp_valid_and_true)); BOOST_TEST_TRAIT_FALSE((mp_valid_and_true)); BOOST_TEST_TRAIT_TRUE((mp_valid_and_true)); using Q_size_t_diff = mp_quote; BOOST_TEST_TRAIT_FALSE((mp_valid_and_true_q)); BOOST_TEST_TRAIT_FALSE((mp_valid_and_true_q)); BOOST_TEST_TRAIT_TRUE((mp_valid_and_true_q)); return boost::report_errors(); }