/* * Copyright (c) Facebook, Inc. and its affiliates. * * 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 #include #include namespace folly { template < class Mapped, class Hash = f14::DefaultHasher, class Eq = f14::DefaultKeyEqual, class Alloc = f14::DefaultAlloc>> struct StringKeyedUnorderedMap : public F14NodeMap { using Super = F14NodeMap; static_assert(is_transparent::value, "not transparent"); static_assert(is_transparent::value, "not transparent"); public: using Super::Super; StringKeyedUnorderedMap() : Super() {} // TODO(T31574848): Work around libstdc++ versions (e.g., GCC < 6) with no // implementation of N4387 ("perfect initialization" for pairs and tuples) to // support existing callsites that list-initialize: // m.insert({sp, x}); std::pair insert( std::pair const& p) { return this->emplace(p.first, p.second); } std::pair insert( std::pair&& p) { return this->emplace(std::move(p)); } }; } // namespace folly