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 20 namespace llvm { 21 22 /// Map a range to a SmallVector with element types deduced from the mapping. 23 template <unsigned Size, class ContainerTy, class FuncTy> 24 auto map_to_vector(ContainerTy &&C, FuncTy &&F) { 25 return to_vector<Size>( 26 map_range(std::forward<ContainerTy>(C), std::forward<FuncTy>(F))); 27 } 28 template <class ContainerTy, class FuncTy> 29 auto 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