namespace cvflann::anyimpl

namespace anyimpl {

// structs

struct bad_any_cast;
struct base_any_policy;

template <typename T>
struct big_any_policy;

template <>
struct choose_policy<unsigned char>;

template <>
struct choose_policy<unsigned long>;

template <>
struct choose_policy<unsigned short>;

template <typename T>
struct choose_policy<T*>;

template <>
struct choose_policy<signed short>;

template <>
struct choose_policy<signed long>;

template <>
struct choose_policy<signed char>;

template <typename T>
struct choose_policy;

template <>
struct choose_policy<bool>;

template <>
struct choose_policy<any>;

template <>
struct choose_policy<float>;

struct empty_any;

template <typename T>
struct small_any_policy;

template <typename T>
struct typed_base_any_policy;

// classes

template <typename T>
class SinglePolicy;

// global functions

std::ostream&
operator<<(
    std::ostream& out,
    const empty_any&
    );

} // namespace anyimpl