summaryrefslogtreecommitdiff
path: root/polly/lib/External/isl/cpp/cpp-checked.h.top
diff options
context:
space:
mode:
Diffstat (limited to 'polly/lib/External/isl/cpp/cpp-checked.h.top')
-rw-r--r--polly/lib/External/isl/cpp/cpp-checked.h.top32
1 files changed, 21 insertions, 11 deletions
diff --git a/polly/lib/External/isl/cpp/cpp-checked.h.top b/polly/lib/External/isl/cpp/cpp-checked.h.top
index be29b971b9b0..6d62fb11037d 100644
--- a/polly/lib/External/isl/cpp/cpp-checked.h.top
+++ b/polly/lib/External/isl/cpp/cpp-checked.h.top
@@ -17,6 +17,11 @@
#include <string>
#include <type_traits>
+#if __cplusplus >= 201703L
+#include <any>
+#include <optional>
+#endif
+
namespace isl {
namespace checked {
@@ -95,18 +100,23 @@ inline boolean manage(isl_bool val) {
}
class ctx {
- isl_ctx *ptr;
+ isl_ctx *ptr;
public:
- /* implicit */ ctx(isl_ctx *ctx)
- : ptr(ctx) {}
- isl_ctx *release() {
- auto tmp = ptr;
- ptr = nullptr;
- return tmp;
- }
- isl_ctx *get() {
- return ptr;
- }
+ /* implicit */ ctx(isl_ctx *ctx) : ptr(ctx) {}
+ isl_ctx *release() {
+ auto tmp = ptr;
+ ptr = nullptr;
+ return tmp;
+ }
+ isl_ctx *get() {
+ return ptr;
+ }
+#if __cplusplus >= 201703L
+ static void free_user(void *user) {
+ std::any *p = static_cast<std::any *>(user);
+ delete p;
+ }
+#endif
};
/* Class encapsulating an isl_stat value.