#include std::set get_all_columns_from_table(sqlite3* db, const std::string& table_name) { std::set result; char* errmsg; std::string query{"PRAGMA table_info(" + table_name + ")"}; int res = sqlite3_exec(db, query.data(), [](void* param, int columns_nb, char** columns, char**) -> int { constexpr int name_column = 1; std::set* result = static_cast*>(param); if (name_column < columns_nb) result->insert(columns[name_column]); return 0; }, &result, &errmsg); if (res != SQLITE_OK) { log_error("Error executing ", query, ": ", errmsg); sqlite3_free(errmsg); } return result; }