SpECTRE Documentation Coverage Report
Current view: top level - Utilities - MakeVector.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 33.3 % 3 1
Test Date: 2026-10-22 17:29:42
Legend: Lines:     hit not hit

            Line data    Source code
       1            0 : // Distributed under the MIT License.
       2              : // See LICENSE.txt for details.
       3              : 
       4              : #pragma once
       5              : 
       6              : #include <initializer_list>
       7              : #include <utility>
       8              : #include <vector>
       9              : 
      10              : #include "Utilities/TMPL.hpp"
      11              : #include "Utilities/TypeTraits.hpp"
      12              : 
      13              : /*!
      14              :  * \brief Constructs a `std::vector` containing arguments passed in.
      15              :  *
      16              :  * This is useful as it allows in-place construction of a vector of non-copyable
      17              :  * objects.
      18              :  *
      19              :  * \example
      20              :  * \snippet Utilities/Test_MakeVector.cpp make_vector_example
      21              :  */
      22              : template <class ValueType = void, class Arg0, class... Args>
      23            1 : auto make_vector(Arg0&& arg_0, Args&&... remaining_args) {
      24              :   std::vector<
      25              :       tmpl::conditional_t<std::is_same_v<ValueType, void>, Arg0, ValueType>>
      26              :       return_vector;
      27              :   return_vector.reserve(sizeof...(Args) + 1);
      28              :   return_vector.emplace_back(std::forward<Arg0>(arg_0));
      29              :   (void)std::initializer_list<int>{
      30              :       (((void)return_vector.emplace_back(std::forward<Args>(remaining_args))),
      31              :        0)...};
      32              :   return return_vector;
      33              : }
      34              : 
      35              : template <class T>
      36            0 : std::vector<T> make_vector() {
      37              :   return {};
      38              : }
        

Generated by: LCOV version 2.0-1