Commit 23677ce0 authored by Nathan Bronson's avatar Nathan Bronson Committed by Facebook Github Bot

support for memory_resource

Summary:
This diff adds folly/memory/MemoryResource.h, which includes
<experimental/memory_resource> or <memory_resource> if they are available.

Reviewed By: yfeldblum

Differential Revision: D15789182

fbshipit-source-id: ff8410b59354af7124a50ca6000c072372397cda
parent 49b2552a
/*
* Copyright 2019-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#ifdef __has_include
#if __has_include(<memory_resource>)
#define FOLLY_HAS_MEMORY_RESOURCE 1
#include <memory_resource> // @manual
namespace folly {
namespace detail {
namespace std_pmr = ::std::pmr;
} // namespace detail
} // namespace folly
#elif __has_include(<experimental/memory_resource>)
#define FOLLY_HAS_MEMORY_RESOURCE 1
#include <experimental/memory_resource> // @manual
namespace folly {
namespace detail {
namespace std_pmr = ::std::experimental::pmr;
} // namespace detail
} // namespace folly
#else
#define FOLLY_HAS_MEMORY_RESOURCE 0
#endif
#else // __has_include
#define FOLLY_HAS_MEMORY_RESOURCE 0
#endif // __has_include
/*
* Copyright 2019-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <folly/memory/MemoryResource.h>
#include <folly/portability/GTest.h>
#if FOLLY_HAS_MEMORY_RESOURCE
TEST(MemoryResource, simple) {
using Alloc = folly::detail::std_pmr::polymorphic_allocator<char>;
std::vector<char, Alloc> v{
Alloc{folly::detail::std_pmr::null_memory_resource()}};
EXPECT_THROW(v.push_back('x'), std::bad_alloc);
}
#endif // FOLLY_HAS_MEMORY_RESOURCE
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment