From 5de0f33bc64d46cecfcc5771973dcf83cc949388 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 5 Jan 2018 01:31:52 +0000 Subject: [PATCH] Add move-only types test to transform_reduce iter iter iter init op op. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@321849 91177308-0d34-0410-b5e6-96231b3b80d8 --- ...sform_reduce_iter_iter_iter_init_op_op.pass.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/std/numerics/numeric.ops/transform.reduce/transform_reduce_iter_iter_iter_init_op_op.pass.cpp b/test/std/numerics/numeric.ops/transform.reduce/transform_reduce_iter_iter_iter_init_op_op.pass.cpp index 41ea3b38a..f60a0f149 100644 --- a/test/std/numerics/numeric.ops/transform.reduce/transform_reduce_iter_iter_iter_init_op_op.pass.cpp +++ b/test/std/numerics/numeric.ops/transform.reduce/transform_reduce_iter_iter_iter_init_op_op.pass.cpp @@ -19,7 +19,9 @@ #include #include +#include +#include "MoveOnly.h" #include "test_iterators.h" template @@ -58,6 +60,16 @@ void test_return_type() decltype(std::transform_reduce(p, p, p, Init{}, std::plus<>(), std::multiplies<>()))> ); } +void test_move_only_types() +{ + MoveOnly ia[] = {{1}, {2}, {3}}; + MoveOnly ib[] = {{1}, {2}, {3}}; + assert(14 == + std::transform_reduce(std::begin(ia), std::end(ia), std::begin(ib), MoveOnly{0}, + [](const MoveOnly& lhs, const MoveOnly& rhs) { return MoveOnly{lhs.get() + rhs.get()}; }, + [](const MoveOnly& lhs, const MoveOnly& rhs) { return MoveOnly{lhs.get() * rhs.get()}; }).get()); +} + int main() { test_return_type(); @@ -94,4 +106,6 @@ int main() test(); test< int*, const unsigned int *>(); test< int*, unsigned int *>(); + + test_move_only_types(); }