1//===- llvm/ADT/SmallVectorExtras.h -----------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// \file
10/// This file defines less commonly used SmallVector utilities.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_ADT_SMALLVECTOREXTRAS_H
15#define LLVM_ADT_SMALLVECTOREXTRAS_H
16
17#include "llvm/ADT/STLExtras.h"
18#include "llvm/ADT/SmallVector.h"
19
20namespace llvm {
21
22/// Map a range to a SmallVector with element types deduced from the mapping.
23template <unsigned Size, class ContainerTy, class FuncTy>
24auto map_to_vector(ContainerTy &&C, FuncTy &&F) {
25 return to_vector<Size>(
26 map_range(std::forward<ContainerTy>(C), std::forward<FuncTy>(F)));
27}
28template <class ContainerTy, class FuncTy>
29auto map_to_vector(ContainerTy &&C, FuncTy &&F) {
30 return to_vector(
31 map_range(std::forward<ContainerTy>(C), std::forward<FuncTy>(F)));
32}
33
34} // namespace llvm
35
36#endif // LLVM_ADT_SMALLVECTOREXTRAS_H

source code of llvm/include/llvm/ADT/SmallVectorExtras.h