diff options
Diffstat (limited to 'src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h')
-rw-r--r-- | src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h b/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h deleted file mode 100644 index 099af83b38..0000000000 --- a/src/libs/3rdparty/botan/src/lib/utils/stl_compatibility.h +++ /dev/null @@ -1,77 +0,0 @@ -/* -* STL standards compatibility functions -* (C) 2017 Tomasz Frydrych -* -* Botan is released under the Simplified BSD License (see license.txt) -*/ - -#ifndef BOTAN_STL_COMPATIBILITY_H_ -#define BOTAN_STL_COMPATIBILITY_H_ - -#include <memory> - -#if __cplusplus < 201402L -#include <cstddef> -#include <type_traits> -#include <utility> -#endif - -namespace Botan -{ -/* -* std::make_unique functionality similar as we have in C++14. -* C++11 version based on proposal for C++14 implemenatation by Stephan T. Lavavej -* source: https://isocpp.org/files/papers/N3656.txt -*/ -#if __cplusplus >= 201402L -template <typename T, typename ... Args> -constexpr auto make_unique(Args&&... args) - { - return std::make_unique<T>(std::forward<Args>(args)...); - } - -template<class T> -constexpr auto make_unique(std::size_t size) - { - return std::make_unique<T>(size); - } - -#else -namespace stlCompatibilityDetails -{ -template<class T> struct _Unique_if - { - typedef std::unique_ptr<T> _Single_object; - }; - -template<class T> struct _Unique_if<T[]> - { - typedef std::unique_ptr<T[]> _Unknown_bound; - }; - -template<class T, size_t N> struct _Unique_if<T[N]> - { - typedef void _Known_bound; - }; -} // namespace stlCompatibilityDetails - -template<class T, class... Args> -typename stlCompatibilityDetails::_Unique_if<T>::_Single_object make_unique(Args&&... args) - { - return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); - } - -template<class T> -typename stlCompatibilityDetails::_Unique_if<T>::_Unknown_bound make_unique(size_t n) - { - typedef typename std::remove_extent<T>::type U; - return std::unique_ptr<T>(new U[n]()); - } - -template<class T, class... Args> -typename stlCompatibilityDetails::_Unique_if<T>::_Known_bound make_unique(Args&&...) = delete; - -#endif - -} // namespace Botan -#endif |