| 151 | |
| 152 | template<int IDX, class T, class U> |
| 153 | void ReplaceDefaultsImpl(U &out, const T &in) |
| 154 | { |
| 155 | using SRC = typename std::tuple_element<IDX, T>::type; |
| 156 | using DST = typename std::tuple_element<IDX, U>::type; |
| 157 | |
| 158 | if constexpr (!std::is_same_v<SRC, Default>) |
| 159 | { |
| 160 | std::get<IDX>(out) = static_cast<DST>(std::get<IDX>(in)); |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | template<class T, class U, size_t... IDX> |
| 165 | void ReplaceDefaultsImpl(U &out, const T &in, std::index_sequence<IDX...>) |