/usr/include/boost/test/utils
Edit: /usr/include/boost/test/utils/is_cstring.hpp (4294B)
// (C) Copyright Gennadiy Rozental 2001.
// 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)
// See http://www.boost.org/libs/test for the library home page.
//
//! @file
//! Defines the is_cstring type trait
// ***************************************************************************
#ifndef BOOST_TEST_UTILS_IS_CSTRING_HPP
#define BOOST_TEST_UTILS_IS_CSTRING_HPP
// Boost
#include
#include
#include
#include
#include
#include
#include
#include
#if defined(BOOST_TEST_STRING_VIEW)
#include
#endif
//____________________________________________________________________________//
namespace boost {
namespace unit_test {
// ************************************************************************** //
// ************** is_cstring ************** //
// ************************************************************************** //
namespace ut_detail {
template
struct is_cstring_impl : public mpl::false_ {};
template
struct is_cstring_impl : public is_cstring_impl {};
template
struct is_cstring_impl : public is_cstring_impl {};
template<>
struct is_cstring_impl : public mpl::true_ {};
template<>
struct is_cstring_impl : public mpl::true_ {};
template ::type>::value >
struct deduce_cstring_transform_impl;
template
struct deduce_cstring_transform_impl : public deduce_cstring_transform_impl{};
template
struct deduce_cstring_transform_impl : public deduce_cstring_transform_impl{};
template
struct deduce_cstring_transform_impl {
typedef typename boost::add_const<
typename boost::remove_pointer<
typename boost::decay::type
>::type
>::type U;
typedef boost::unit_test::basic_cstring type;
};
template
struct deduce_cstring_transform_impl< T, false > {
typedef typename
boost::remove_const<
typename boost::remove_reference::type
>::type type;
};
template
struct deduce_cstring_transform_impl< std::basic_string >, false > {
typedef boost::unit_test::basic_cstring::type> type;
};
#if defined(BOOST_TEST_STRING_VIEW)
template
struct deduce_cstring_transform_impl< std::basic_string_view >, false > {
private:
using sv_t = std::basic_string_view > ;
public:
using type = stringview_cstring_helper::type, sv_t>;
};
#endif
} // namespace ut_detail
template
struct is_cstring : public ut_detail::is_cstring_impl::type> {};
template::type>::value >
struct is_cstring_comparable: public mpl::false_ {};
template
struct is_cstring_comparable< T, true > : public mpl::true_ {};
template
struct is_cstring_comparable< std::basic_string >, false > : public mpl::true_ {};
#if defined(BOOST_TEST_STRING_VIEW)
template
struct is_cstring_comparable< std::basic_string_view >, false > : public mpl::true_ {};
#endif
template
struct is_cstring_comparable< boost::unit_test::basic_cstring, false > : public mpl::true_ {};
template
struct deduce_cstring_transform {
typedef typename
boost::remove_const<
typename boost::remove_reference::type
>::type U;
typedef typename ut_detail::deduce_cstring_transform_impl::type>::type type;
};
} // namespace unit_test
} // namespace boost
#endif // BOOST_TEST_UTILS_IS_CSTRING_HPP