VCCC  2024.05
VisualCamp Common C++ library
in_in_out_result.hpp
Go to the documentation of this file.
1 //
2 // Created by yonggyulee on 1/25/24.
3 //
4 
5 #ifndef VCCC_ALGORITHM_RANGES_IN_IN_OUT_RESULT_HPP
6 #define VCCC_ALGORITHM_RANGES_IN_IN_OUT_RESULT_HPP
7 
8 #include <type_traits>
9 #include <utility>
10 
14 
15 namespace vccc {
16 namespace ranges {
17 
20 
21 template<typename I1, typename I2, typename O>
26 
27  template<typename II1, typename II2, typename OO, std::enable_if_t<conjunction<
31  >::value, int> = 0>
32  constexpr operator in_in_out_result<I2, II2, OO>() const & {
33  return {in1, in2, out};
34  }
35 
36  template<typename II1, typename II2, typename OO, std::enable_if_t<conjunction<
40  >::value, int> = 0>
41  constexpr operator in_in_out_result<I2, II2, OO>() && {
42  return {std::move(in1), std::move(in2), std::move(out)};
43  }
44 };
45 
47 
48 } // namespace ranges
49 } // namespace vccc
50 
51 #endif // VCCC_ALGORITHM_RANGES_IN_IN_OUT_RESULT_HPP
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
#define VCCC_NO_UNIQUE_ADDRESS
Definition: no_unique_address.hpp:9
Definition: conjunction.hpp:22
Models std::convertible_to
Definition: convertible_to.hpp:38
Definition: in_in_out_result.hpp:22
VCCC_NO_UNIQUE_ADDRESS I2 in2
Definition: in_in_out_result.hpp:24
VCCC_NO_UNIQUE_ADDRESS I1 in1
Definition: in_in_out_result.hpp:23
VCCC_NO_UNIQUE_ADDRESS O out
Definition: in_in_out_result.hpp:25