summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpqpp/pq-column.h11
-rw-r--r--libpqpp/pq-helpers.h14
2 files changed, 16 insertions, 9 deletions
diff --git a/libpqpp/pq-column.h b/libpqpp/pq-column.h
index d3400bf..6bf2669 100644
--- a/libpqpp/pq-column.h
+++ b/libpqpp/pq-column.h
@@ -1,6 +1,7 @@
#ifndef PG_COLUMN_H
#define PG_COLUMN_H
+#include "pq-helpers.h"
#include <column.h>
#include <cstring>
#include <libpq-fe.h>
@@ -32,15 +33,7 @@ namespace PQ {
const Oid oid;
// Buffer for PQunescapeBytea
- struct pq_deleter {
- void
- operator()(unsigned char * p)
- {
- PQfreemem(p);
- }
- };
-
- using BufPtr = std::unique_ptr<unsigned char, pq_deleter>;
+ using BufPtr = std::unique_ptr<unsigned char, pq_deleter<PQfreemem>>;
mutable BufPtr buf;
};
}
diff --git a/libpqpp/pq-helpers.h b/libpqpp/pq-helpers.h
new file mode 100644
index 0000000..76e5057
--- /dev/null
+++ b/libpqpp/pq-helpers.h
@@ -0,0 +1,14 @@
+#ifndef PQ_HELPERS_H
+#define PQ_HELPERS_H
+
+namespace PQ {
+ template<auto func> struct pq_deleter {
+ void
+ operator()(auto p) const
+ {
+ func(p);
+ }
+ };
+}
+
+#endif