71        bool bind(
int index, T value) noexcept
 
   77            if constexpr (std::is_same_v<T, int>)
 
   79                return sqlite3_bind_int(m_statement, index, value) == SQLITE_OK;
 
   81            else if constexpr (std::is_same_v<T, std::int64_t>)
 
   83                return sqlite3_bind_int64(m_statement, index, value) == SQLITE_OK;
 
   85            else if constexpr (std::is_same_v<T, double>)
 
   87                return sqlite3_bind_double(m_statement, index, value) == SQLITE_OK;
 
   89            else if constexpr (std::is_same_v<T, bool>)
 
   91                return sqlite3_bind_int(m_statement, index, value ? 1 : 0) == SQLITE_OK;
 
   93            else if constexpr (std::is_same_v<T, std::string>)
 
   95                return sqlite3_bind_text(m_statement, index, value.c_str(), -1, SQLITE_TRANSIENT) == SQLITE_OK;
 
 
  107            if constexpr (std::is_same_v<T, int>)
 
  113                return sqlite3_column_int(m_statement, index);
 
  115            else if constexpr (std::is_same_v<T, std::int64_t>)
 
  121                return sqlite3_column_int64(m_statement, index);
 
  123            else if constexpr (std::is_same_v<T, double>)
 
  129                return sqlite3_column_double(m_statement, index);
 
  131            else if constexpr (std::is_same_v<T, bool>)
 
  137                return static_cast<bool>(sqlite3_column_int(m_statement, index));
 
  139            else if constexpr (std::is_same_v<T, std::string>)
 
  145                return { 
reinterpret_cast<const char*
>(sqlite3_column_text(m_statement, index)), 
static_cast<size_t>(sqlite3_column_bytes(m_statement, index)) };