#include #include #include #include #include #include #include struct ConvertibleFromStringStream { friend std::istream &operator>>(std::istream &os, ConvertibleFromStringStream &) { return os; } }; struct NotConvertibleFromStringStream { }; DROGON_TEST(CanConvertFromStringStream) { using drogon::internal::CanConvertFromStringStream; static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert(CanConvertFromStringStream::value); static_assert( CanConvertFromStringStream::value); static_assert( !CanConvertFromStringStream::value); } struct ConstructibleFromString { ConstructibleFromString(const std::string &) { } }; struct NotConstructibleFromString { }; DROGON_TEST(CanConstructFromString) { using drogon::internal::CanConstructFromString; static_assert(CanConstructFromString::value); static_assert(!CanConstructFromString::value); static_assert(!CanConstructFromString::value); static_assert(!CanConstructFromString::value); static_assert(CanConstructFromString::value); static_assert(CanConstructFromString::value); static_assert(CanConstructFromString::value); static_assert(!CanConstructFromString::value); static_assert(CanConstructFromString::value); static_assert(!CanConstructFromString::value); } struct ConvertibleFromString { ConvertibleFromString &operator=(const std::string &) { return *this; } }; struct NotConvertibleFromString { }; DROGON_TEST(CanConvertFromString) { using drogon::internal::CanConvertFromString; static_assert(CanConvertFromString::value); static_assert(!CanConvertFromString::value); static_assert(CanConvertFromString::value); static_assert(!CanConvertFromString::value); static_assert(!CanConvertFromString::value); static_assert(!CanConvertFromString::value); static_assert(CanConvertFromString::value); static_assert(!CanConvertFromString::value); static_assert(!CanConvertFromString>::value); static_assert(!CanConvertFromString>::value); static_assert(!CanConvertFromString::value); static_assert(!CanConvertFromString::value); }