#pragma once #include #include namespace devilution { // Apple Clang 12 has a buggy implementation that fails to compile `std::shared_ptr(new T[size])`. #if (__cplusplus >= 201611L && (!defined(__clang_major__) || __clang_major__ >= 13)) && !defined(NXDK) template using ArraySharedPtr = std::shared_ptr; template ArraySharedPtr MakeArraySharedPtr(std::size_t size) { return ArraySharedPtr(new T[size]); } #else template using ArraySharedPtr = std::shared_ptr; template ArraySharedPtr MakeArraySharedPtr(std::size_t size) { return ArraySharedPtr { new T[size], std::default_delete() }; } #endif } // namespace devilution