summaryrefslogtreecommitdiffhomepage
path: root/compat/vector-wrapper.hpp
blob: b664c32b97c288bcda7725befe921d461d6fbecd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include "vector-wrapper-fwd.hpp"
#include <vector>

namespace floormat {

template<typename T, vector_wrapper_repr> struct vector_wrapper_traits;

template<typename T> struct vector_wrapper_traits<T, vector_wrapper_repr::ref> { using vector_type = std::vector<T>&; };
template<typename T> struct vector_wrapper_traits<T, vector_wrapper_repr::const_ref> { using vector_type = const std::vector<T>&; };
template<typename T> struct vector_wrapper_traits<T, vector_wrapper_repr::value> { using vector_type = std::vector<T>; };

template<typename T, vector_wrapper_repr R>
struct vector_wrapper final
{
    typename vector_wrapper_traits<T, R>::vector_type vec;
};

} // namespace floormat