mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 16:46:08 +00:00

- add the `from_range_t` constructors and the related deduction guides; - add the `push_range` member function. (Note: this patch is split from https://reviews.llvm.org/D142335) Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D149829
33 lines
1.1 KiB
C++
33 lines
1.1 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SUPPORT_UNWRAP_CONTAINER_ADAPTOR_H
|
|
#define SUPPORT_UNWRAP_CONTAINER_ADAPTOR_H
|
|
|
|
// Allows accessing the underlying container of the given adaptor.
|
|
template <class Adaptor>
|
|
struct UnwrapAdaptor : Adaptor {
|
|
UnwrapAdaptor() = default;
|
|
|
|
UnwrapAdaptor(Adaptor&& adaptor) : Adaptor(std::move(adaptor)) {}
|
|
// `c` is a protected member variable of the base class.
|
|
decltype(auto) get_container() {
|
|
return (UnwrapAdaptor::c); // Put into parentheses to make sure the function returns a reference.
|
|
}
|
|
|
|
// TODO: make this work pre-C++20.
|
|
decltype(auto) get_comparator()
|
|
requires requires {
|
|
UnwrapAdaptor::c;
|
|
} {
|
|
return (UnwrapAdaptor::comp); // Put into parentheses to make sure the function returns a reference.
|
|
}
|
|
};
|
|
|
|
#endif // SUPPORT_UNWRAP_CONTAINER_ADAPTOR_H
|