#ifndef CHILON_NONE_HPP
#define CHILON_NONE_HPP
namespace chilon {
namespace detail {
template <bool Answer = false>
struct none {
template <class T>
bool operator==(T const& t) const { return Answer; }
template <class T>
bool operator!=(T const& t) const { return Answer; }
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template <class... T>
bool test(T const&... in) const { return Answer; }
#else
template <class T>
bool test(T const& in) const { return Answer; }
#endif
};
}; // end detail namespace
struct none : detail::none<> {
typedef none value_type;
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template <class... T>
none(T const&... in) {}
#else
template <class T>
none(T const& in) {}
#endif
};
struct none_true : detail::none<true> {
typedef none_true value_type;
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template <class... T>
none_true(T const&... in) {}
#else
template <class T>
none(T const& in) {}
#endif
};
}
#endif