File tree Expand file tree Collapse file tree 2 files changed +11
-3
lines changed
Expand file tree Collapse file tree 2 files changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -181,9 +181,10 @@ struct infinite_range_proxy {
181181 iterator begin_;
182182};
183183
184- template <typename T>
185- range_proxy<T> range (T begin, T end) {
186- return {begin, end};
184+ template <typename T, typename U>
185+ auto range (T begin, U end) -> range_proxy<typename std::common_type<T, U>::type> {
186+ using C = typename std::common_type<T, U>::type;
187+ return {static_cast <C>(begin), static_cast <C>(end)};
187188}
188189
189190template <typename T>
Original file line number Diff line number Diff line change @@ -64,6 +64,13 @@ int main() {
6464 print_range (range (8.0 , 1.0 ).step (-2.0 ));
6565 cout << " \n " ;
6666
67+ cout << " Mixed type inference:\n " ;
68+ print_range (range (0 , sizeof " Hello" ));
69+ cout << " Inferred as mangled type name "
70+ << typeid (typename std::iterator_traits<decltype (range (0 , sizeof " Hello" ).begin ())>::value_type).name ()
71+ << " (expected: " << typeid (decltype (sizeof " Hello" )).name () << " )\n " ;
72+ cout << " \n " ;
73+
6774 test_range_size (range (1 , 8 ).step (2 ));
6875 test_range_size (range (8.0 , 1.0 ).step (-2.0 ));
6976 test_range_size (range (8 , 1 ).step (-2 ));
You can’t perform that action at this time.
0 commit comments