]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Wrap C++14's std::make_unique as std_cxx14::make_unique.
authorDavid Wells <wellsd2@rpi.edu>
Sat, 8 Apr 2017 21:57:39 +0000 (17:57 -0400)
committerDavid Wells <wellsd2@rpi.edu>
Sun, 9 Apr 2017 23:20:46 +0000 (19:20 -0400)
include/deal.II/base/std_cxx14/memory.h [new file with mode: 0644]

diff --git a/include/deal.II/base/std_cxx14/memory.h b/include/deal.II/base/std_cxx14/memory.h
new file mode 100644 (file)
index 0000000..437bb81
--- /dev/null
@@ -0,0 +1,46 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+#ifndef dealii__cxx14_memory_h
+#define dealii__cxx14_memory_h
+
+#include <deal.II/base/config.h>
+
+#include <memory>
+
+#ifndef DEAL_II_WITH_CXX14
+// needed for array type check
+#  include <type_traits>
+#endif
+
+DEAL_II_NAMESPACE_OPEN
+namespace std_cxx14
+{
+#ifdef DEAL_II_WITH_CXX14
+  using std::make_unique;
+#else
+  template <typename T, typename... Args>
+  inline
+  std::unique_ptr<T>
+  make_unique(Args &&... constructor_arguments)
+  {
+    static_assert(!std::is_array<T>::value,
+                  "This function is not implemented for array types.");
+    return std::unique_ptr<T>(new T(std::forward<Args>(constructor_arguments)...));
+  }
+#endif
+}
+DEAL_II_NAMESPACE_CLOSE
+
+#endif // dealii__cxx14_memory_h

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.