56 lines
1.2 KiB
C++
56 lines
1.2 KiB
C++
#ifndef BOOST_METAPARSE_V1_CPP14_IMPL_ANY_OF_C_HPP
|
|
#define BOOST_METAPARSE_V1_CPP14_IMPL_ANY_OF_C_HPP
|
|
|
|
// Copyright Abel Sinkovics (abel@sinkovics.hu) 2017.
|
|
// 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 <boost/mpl/bool.hpp>
|
|
|
|
namespace boost
|
|
{
|
|
namespace metaparse
|
|
{
|
|
namespace v1
|
|
{
|
|
namespace impl
|
|
{
|
|
template <char... Cs>
|
|
struct any_of_c
|
|
{
|
|
typedef any_of_c type;
|
|
|
|
static constexpr bool run(char c_)
|
|
{
|
|
const bool values[] = {(c_ == Cs)...};
|
|
for (const bool* i = values; i != values + sizeof...(Cs); ++i)
|
|
{
|
|
if (*i)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
template <class Chr>
|
|
struct apply : boost::mpl::bool_<any_of_c::run(Chr::type::value)> {};
|
|
};
|
|
|
|
template <>
|
|
struct any_of_c<>
|
|
{
|
|
typedef any_of_c type;
|
|
|
|
template <class>
|
|
struct apply : boost::mpl::false_ {};
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|