///////////////////////////////////////////////////////////////////
namespace _detail
{
- template<typename Tp>
+ template<typename _Tp>
struct _has_type_const_iterator
{
private:
template<typename C> static std::true_type test( typename C::const_iterator * );
template<typename C> static std::false_type test(...);
public:
- static constexpr bool value = decltype(test<Tp>(nullptr))::value;
+ static constexpr bool value = decltype(test<_Tp>(nullptr))::value;
};
- template <typename Tp>
+ template <typename _Tp>
struct _has_container_begin_end
{
private:
template<typename C> static std::false_type testEnd(...);
public:
- static constexpr bool beg_value = decltype(testBeg<Tp>(nullptr))::value;
- static constexpr bool end_value = decltype(testEnd<Tp>(nullptr))::value;
+ static constexpr bool beg_value = decltype(testBeg<_Tp>(nullptr))::value;
+ static constexpr bool end_value = decltype(testEnd<_Tp>(nullptr))::value;
static constexpr bool value = beg_value && end_value;
};
} // namespace _detail
///////////////////////////////////////////////////////////////////
- /** Whether \a Tp defines type \a Tp::const_iterator */
- template<typename Tp>
+ /** Whether \a _Tp defines type \a _Tp::const_iterator */
+ template<typename _Tp>
struct has_type_const_iterator
- : public std::integral_constant<bool, _detail::has_type_const_iterator<Tp>::value>
+ : public std::integral_constant<bool, _detail::has_type_const_iterator<_Tp>::value>
{};
- /** Whether \a Tp defines methods <tt>Tp::const_iterator begin/end() const</tt> */
- template<typename Tp>
+ /** Whether \a _Tp defines methods <tt>_Tp::const_iterator begin/end() const</tt> */
+ template<typename _Tp>
struct has_container_begin_end
- : public std::integral_constant<bool, _detail::_has_container_begin_end<Tp>::value>
+ : public std::integral_constant<bool, _detail::_has_container_begin_end<_Tp>::value>
{};
- /** Whether \a Tp is a container (begin/end iterabel, but not plain std::string) */
- template<typename Tp>
+ /** Whether \a _Tp is a container (begin/end iterabel, but not plain std::string) */
+ template<typename _Tp>
struct is_container
- : public std::integral_constant<bool, !std::is_same<Tp, std::string>::value && has_container_begin_end<Tp>::value>
+ : public std::integral_constant<bool, !std::is_same<_Tp, std::string>::value && has_container_begin_end<_Tp>::value>
{};