mirror of
https://github.com/boostorg/range.git
synced 2025-07-30 21:07:23 +02:00
trac 6742 - unit test showing working phoenix combined with the transformed adaptor.
This commit is contained in:
275
test/Jamfile.v2
275
test/Jamfile.v2
@ -13,12 +13,12 @@
|
|||||||
import testing ;
|
import testing ;
|
||||||
|
|
||||||
project
|
project
|
||||||
: requirements
|
: requirements
|
||||||
<library>/boost/test//boost_unit_test_framework/
|
<library>/boost/test//boost_unit_test_framework/
|
||||||
<library>/boost/regex//boost_regex/
|
<library>/boost/regex//boost_regex/
|
||||||
<link>static
|
<link>static
|
||||||
<threading>multi
|
<threading>multi
|
||||||
;
|
;
|
||||||
|
|
||||||
rule range-test ( name : includes * )
|
rule range-test ( name : includes * )
|
||||||
{
|
{
|
||||||
@ -31,141 +31,142 @@ rule range-test ( name : includes * )
|
|||||||
}
|
}
|
||||||
|
|
||||||
test-suite range :
|
test-suite range :
|
||||||
[ compile-fail compile_fail/iterator_range1.cpp ]
|
[ compile-fail compile_fail/iterator_range1.cpp ]
|
||||||
[ range-test adaptor_test/adjacent_filtered ]
|
[ range-test adaptor_test/adjacent_filtered ]
|
||||||
[ range-test adaptor_test/copied ]
|
[ range-test adaptor_test/copied ]
|
||||||
[ range-test adaptor_test/filtered ]
|
[ range-test adaptor_test/filtered ]
|
||||||
[ range-test adaptor_test/indexed ]
|
[ range-test adaptor_test/indexed ]
|
||||||
[ range-test adaptor_test/indirected ]
|
[ range-test adaptor_test/indirected ]
|
||||||
[ range-test adaptor_test/map ]
|
[ range-test adaptor_test/map ]
|
||||||
[ range-test adaptor_test/replaced ]
|
[ range-test adaptor_test/replaced ]
|
||||||
[ range-test adaptor_test/replaced_if ]
|
[ range-test adaptor_test/replaced_if ]
|
||||||
[ range-test adaptor_test/reversed ]
|
[ range-test adaptor_test/reversed ]
|
||||||
[ range-test adaptor_test/sliced ]
|
[ range-test adaptor_test/sliced ]
|
||||||
[ range-test adaptor_test/strided ]
|
[ range-test adaptor_test/strided ]
|
||||||
[ range-test adaptor_test/strided2 ]
|
[ range-test adaptor_test/strided2 ]
|
||||||
|
[ range-test adaptor_test/ticket_6742_transformed_c4789_warning ]
|
||||||
[ range-test adaptor_test/ticket_8676_sliced_transformed ]
|
[ range-test adaptor_test/ticket_8676_sliced_transformed ]
|
||||||
[ range-test adaptor_test/ticket_9519_strided_reversed ]
|
[ range-test adaptor_test/ticket_9519_strided_reversed ]
|
||||||
[ range-test adaptor_test/tokenized ]
|
[ range-test adaptor_test/tokenized ]
|
||||||
[ range-test adaptor_test/transformed ]
|
[ range-test adaptor_test/transformed ]
|
||||||
[ range-test adaptor_test/type_erased ]
|
[ range-test adaptor_test/type_erased ]
|
||||||
[ range-test adaptor_test/uniqued ]
|
[ range-test adaptor_test/uniqued ]
|
||||||
[ range-test adaptor_test/adjacent_filtered_example ]
|
[ range-test adaptor_test/adjacent_filtered_example ]
|
||||||
[ range-test adaptor_test/copied_example ]
|
[ range-test adaptor_test/copied_example ]
|
||||||
[ range-test adaptor_test/filtered_example ]
|
[ range-test adaptor_test/filtered_example ]
|
||||||
[ range-test adaptor_test/indexed_example ]
|
[ range-test adaptor_test/indexed_example ]
|
||||||
[ range-test adaptor_test/indirected_example ]
|
[ range-test adaptor_test/indirected_example ]
|
||||||
[ range-test adaptor_test/map_keys_example ]
|
[ range-test adaptor_test/map_keys_example ]
|
||||||
[ range-test adaptor_test/map_values_example ]
|
[ range-test adaptor_test/map_values_example ]
|
||||||
[ range-test adaptor_test/replaced_example ]
|
[ range-test adaptor_test/replaced_example ]
|
||||||
[ range-test adaptor_test/replaced_if_example ]
|
[ range-test adaptor_test/replaced_if_example ]
|
||||||
[ range-test adaptor_test/reversed_example ]
|
[ range-test adaptor_test/reversed_example ]
|
||||||
[ range-test adaptor_test/sliced_example ]
|
[ range-test adaptor_test/sliced_example ]
|
||||||
[ range-test adaptor_test/strided_example ]
|
[ range-test adaptor_test/strided_example ]
|
||||||
[ range-test adaptor_test/transformed_example ]
|
[ range-test adaptor_test/transformed_example ]
|
||||||
[ range-test adaptor_test/tokenized_example ]
|
[ range-test adaptor_test/tokenized_example ]
|
||||||
[ range-test adaptor_test/type_erased_example ]
|
[ range-test adaptor_test/type_erased_example ]
|
||||||
[ range-test adaptor_test/uniqued_example ]
|
[ range-test adaptor_test/uniqued_example ]
|
||||||
[ range-test algorithm_test/adjacent_find ]
|
[ range-test algorithm_test/adjacent_find ]
|
||||||
[ range-test algorithm_test/binary_search ]
|
[ range-test algorithm_test/binary_search ]
|
||||||
[ range-test algorithm_test/copy ]
|
[ range-test algorithm_test/copy ]
|
||||||
[ range-test algorithm_test/copy_backward ]
|
[ range-test algorithm_test/copy_backward ]
|
||||||
[ range-test algorithm_test/count ]
|
[ range-test algorithm_test/count ]
|
||||||
[ range-test algorithm_test/count_if ]
|
[ range-test algorithm_test/count_if ]
|
||||||
[ range-test algorithm_test/equal ]
|
[ range-test algorithm_test/equal ]
|
||||||
[ range-test algorithm_test/equal_range ]
|
[ range-test algorithm_test/equal_range ]
|
||||||
[ range-test algorithm_test/fill ]
|
[ range-test algorithm_test/fill ]
|
||||||
[ range-test algorithm_test/find ]
|
[ range-test algorithm_test/find ]
|
||||||
[ range-test algorithm_test/find_if ]
|
[ range-test algorithm_test/find_if ]
|
||||||
[ range-test algorithm_test/find_end ]
|
[ range-test algorithm_test/find_end ]
|
||||||
[ range-test algorithm_test/find_first_of ]
|
[ range-test algorithm_test/find_first_of ]
|
||||||
[ range-test algorithm_test/for_each ]
|
[ range-test algorithm_test/for_each ]
|
||||||
[ range-test algorithm_test/generate ]
|
[ range-test algorithm_test/generate ]
|
||||||
[ range-test algorithm_test/heap ]
|
[ range-test algorithm_test/heap ]
|
||||||
[ range-test algorithm_test/includes ]
|
[ range-test algorithm_test/includes ]
|
||||||
[ range-test algorithm_test/inplace_merge ]
|
[ range-test algorithm_test/inplace_merge ]
|
||||||
[ range-test algorithm_test/lexicographical_compare ]
|
[ range-test algorithm_test/lexicographical_compare ]
|
||||||
[ range-test algorithm_test/lower_bound ]
|
[ range-test algorithm_test/lower_bound ]
|
||||||
[ range-test algorithm_test/max_element ]
|
[ range-test algorithm_test/max_element ]
|
||||||
[ range-test algorithm_test/merge ]
|
[ range-test algorithm_test/merge ]
|
||||||
[ range-test algorithm_test/min_element ]
|
[ range-test algorithm_test/min_element ]
|
||||||
[ range-test algorithm_test/mismatch ]
|
[ range-test algorithm_test/mismatch ]
|
||||||
[ range-test algorithm_test/next_permutation ]
|
[ range-test algorithm_test/next_permutation ]
|
||||||
[ range-test algorithm_test/nth_element ]
|
[ range-test algorithm_test/nth_element ]
|
||||||
[ range-test algorithm_test/partial_sort ]
|
[ range-test algorithm_test/partial_sort ]
|
||||||
[ range-test algorithm_test/partition ]
|
[ range-test algorithm_test/partition ]
|
||||||
[ range-test algorithm_test/prev_permutation ]
|
[ range-test algorithm_test/prev_permutation ]
|
||||||
[ range-test algorithm_test/random_shuffle ]
|
[ range-test algorithm_test/random_shuffle ]
|
||||||
[ range-test algorithm_test/remove ]
|
[ range-test algorithm_test/remove ]
|
||||||
[ range-test algorithm_test/remove_copy ]
|
[ range-test algorithm_test/remove_copy ]
|
||||||
[ range-test algorithm_test/remove_copy_if ]
|
[ range-test algorithm_test/remove_copy_if ]
|
||||||
[ range-test algorithm_test/remove_if ]
|
[ range-test algorithm_test/remove_if ]
|
||||||
[ range-test algorithm_test/replace ]
|
[ range-test algorithm_test/replace ]
|
||||||
[ range-test algorithm_test/replace_copy ]
|
[ range-test algorithm_test/replace_copy ]
|
||||||
[ range-test algorithm_test/replace_copy_if ]
|
[ range-test algorithm_test/replace_copy_if ]
|
||||||
[ range-test algorithm_test/replace_if ]
|
[ range-test algorithm_test/replace_if ]
|
||||||
[ range-test algorithm_test/reverse ]
|
[ range-test algorithm_test/reverse ]
|
||||||
[ range-test algorithm_test/reverse_copy ]
|
[ range-test algorithm_test/reverse_copy ]
|
||||||
[ range-test algorithm_test/rotate ]
|
[ range-test algorithm_test/rotate ]
|
||||||
[ range-test algorithm_test/rotate_copy ]
|
[ range-test algorithm_test/rotate_copy ]
|
||||||
[ range-test algorithm_test/search ]
|
[ range-test algorithm_test/search ]
|
||||||
[ range-test algorithm_test/search_n ]
|
[ range-test algorithm_test/search_n ]
|
||||||
[ range-test algorithm_test/set_difference ]
|
[ range-test algorithm_test/set_difference ]
|
||||||
[ range-test algorithm_test/set_intersection ]
|
[ range-test algorithm_test/set_intersection ]
|
||||||
[ range-test algorithm_test/set_symmetric_difference ]
|
[ range-test algorithm_test/set_symmetric_difference ]
|
||||||
[ range-test algorithm_test/set_union ]
|
[ range-test algorithm_test/set_union ]
|
||||||
[ range-test algorithm_test/sort ]
|
[ range-test algorithm_test/sort ]
|
||||||
[ range-test algorithm_test/stable_partition ]
|
[ range-test algorithm_test/stable_partition ]
|
||||||
[ range-test algorithm_test/stable_sort ]
|
[ range-test algorithm_test/stable_sort ]
|
||||||
[ range-test algorithm_test/swap_ranges ]
|
[ range-test algorithm_test/swap_ranges ]
|
||||||
[ range-test algorithm_test/transform ]
|
[ range-test algorithm_test/transform ]
|
||||||
[ range-test algorithm_test/unique ]
|
[ range-test algorithm_test/unique ]
|
||||||
[ range-test algorithm_test/unique_copy ]
|
[ range-test algorithm_test/unique_copy ]
|
||||||
[ range-test algorithm_test/upper_bound ]
|
[ range-test algorithm_test/upper_bound ]
|
||||||
[ range-test algorithm_ext_test/copy_n ]
|
[ range-test algorithm_ext_test/copy_n ]
|
||||||
[ range-test algorithm_ext_test/erase ]
|
[ range-test algorithm_ext_test/erase ]
|
||||||
[ range-test algorithm_ext_test/for_each_ext ]
|
[ range-test algorithm_ext_test/for_each_ext ]
|
||||||
[ range-test algorithm_ext_test/insert ]
|
[ range-test algorithm_ext_test/insert ]
|
||||||
[ range-test algorithm_ext_test/iota ]
|
[ range-test algorithm_ext_test/iota ]
|
||||||
[ range-test algorithm_ext_test/is_sorted ]
|
[ range-test algorithm_ext_test/is_sorted ]
|
||||||
[ range-test algorithm_ext_test/overwrite ]
|
[ range-test algorithm_ext_test/overwrite ]
|
||||||
[ range-test algorithm_ext_test/push_back ]
|
[ range-test algorithm_ext_test/push_back ]
|
||||||
[ range-test algorithm_ext_test/push_front ]
|
[ range-test algorithm_ext_test/push_front ]
|
||||||
[ range-test adl_conformance ]
|
[ range-test adl_conformance ]
|
||||||
[ range-test adl_conformance_no_using ]
|
[ range-test adl_conformance_no_using ]
|
||||||
[ range-test algorithm ]
|
[ range-test algorithm ]
|
||||||
[ range-test algorithm_example ]
|
[ range-test algorithm_example ]
|
||||||
[ range-test array ]
|
[ range-test array ]
|
||||||
# [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ]
|
# [ range-test atl : <include>$(VC71_ROOT)/atlmfc/include ]
|
||||||
[ range-test begin ]
|
[ range-test begin ]
|
||||||
[ range-test combine ]
|
[ range-test combine ]
|
||||||
[ range-test compat2 ]
|
[ range-test compat2 ]
|
||||||
[ range-test compat3 ]
|
[ range-test compat3 ]
|
||||||
[ range-test const_ranges ]
|
[ range-test const_ranges ]
|
||||||
[ range-test counting_range ]
|
[ range-test counting_range ]
|
||||||
[ range-test end ]
|
[ range-test end ]
|
||||||
[ range-test extension_mechanism ]
|
[ range-test extension_mechanism ]
|
||||||
[ range-test extension_size ]
|
[ range-test extension_size ]
|
||||||
[ range-test has_range_iterator ]
|
[ range-test has_range_iterator ]
|
||||||
[ range-test irange ]
|
[ range-test irange ]
|
||||||
[ range-test istream_range ]
|
[ range-test istream_range ]
|
||||||
[ range-test iterator_pair ]
|
[ range-test iterator_pair ]
|
||||||
[ range-test iterator_range ]
|
[ range-test iterator_range ]
|
||||||
[ range-test iterator_range_variant ]
|
[ range-test iterator_range_variant ]
|
||||||
# [ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ]
|
# [ range-test mfc : <include>$(VC71_ROOT)/atlmfc/include ]
|
||||||
[ range-test join ]
|
[ range-test join ]
|
||||||
[ range-test partial_workaround ]
|
[ range-test partial_workaround ]
|
||||||
[ range-test pointer_as_iterator ]
|
[ range-test pointer_as_iterator ]
|
||||||
[ range-test reversible_range ]
|
[ range-test reversible_range ]
|
||||||
[ range-test std_container ]
|
[ range-test std_container ]
|
||||||
[ range-test string ]
|
[ range-test string ]
|
||||||
[ range-test sub_range ]
|
[ range-test sub_range ]
|
||||||
[ range-test ticket_5486 ]
|
[ range-test ticket_5486 ]
|
||||||
[ range-test ticket_5544_terminate_irange ]
|
[ range-test ticket_5544_terminate_irange ]
|
||||||
[ range-test ticket_5547 ]
|
[ range-test ticket_5547 ]
|
||||||
[ range-test ticket_5556_is_sorted_namespace ]
|
[ range-test ticket_5556_is_sorted_namespace ]
|
||||||
[ range-test ticket_5811_indirected_optional ]
|
[ range-test ticket_5811_indirected_optional ]
|
||||||
[ range-test ticket_6715_iterator_range_equality ]
|
[ range-test ticket_6715_iterator_range_equality ]
|
||||||
[ range-test ticket_6944 ]
|
[ range-test ticket_6944 ]
|
||||||
;
|
;
|
||||||
|
|
||||||
|
69
test/adaptor_test/ticket_6742_transformed_c4789_warning.cpp
Normal file
69
test/adaptor_test/ticket_6742_transformed_c4789_warning.cpp
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
// Boost.Range library
|
||||||
|
//
|
||||||
|
// Copyright Neil Groves 2014. Use, modification and
|
||||||
|
// distribution is subject to the Boost Software License, Version
|
||||||
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// For more information, see http://www.boost.org/libs/range/
|
||||||
|
//
|
||||||
|
#include <boost/phoenix/core.hpp>
|
||||||
|
#include <boost/phoenix/operator.hpp>
|
||||||
|
#include <boost/range/adaptor/transformed.hpp>
|
||||||
|
#include <boost/range/algorithm_ext/push_back.hpp>
|
||||||
|
#include <boost/test/test_tools.hpp>
|
||||||
|
#include <boost/test/unit_test.hpp>
|
||||||
|
#include <iterator>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
struct test_struct
|
||||||
|
{
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct get_x
|
||||||
|
{
|
||||||
|
typedef double result_type;
|
||||||
|
double operator()(const test_struct& s) const
|
||||||
|
{
|
||||||
|
return s.x;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void range_transformed_warning()
|
||||||
|
{
|
||||||
|
using namespace boost::phoenix::arg_names;
|
||||||
|
using namespace boost::adaptors;
|
||||||
|
|
||||||
|
test_struct t;
|
||||||
|
t.x = 2.0;
|
||||||
|
t.y = -4.0;
|
||||||
|
std::vector<test_struct> v(10u, t);
|
||||||
|
|
||||||
|
std::vector<double> output1;
|
||||||
|
boost::push_back(output1, v | transformed((&arg1)->*& test_struct::x));
|
||||||
|
|
||||||
|
std::vector<double> output2;
|
||||||
|
boost::push_back(output2, v | transformed(get_x()));
|
||||||
|
|
||||||
|
BOOST_CHECK_EQUAL_COLLECTIONS(
|
||||||
|
output1.begin(), output1.end(),
|
||||||
|
output2.begin(), output2.end());
|
||||||
|
}
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
boost::unit_test::test_suite*
|
||||||
|
init_unit_test_suite(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
boost::unit_test::test_suite* test
|
||||||
|
= BOOST_TEST_SUITE( "Range adaptors - transformed warning" );
|
||||||
|
|
||||||
|
test->add(BOOST_TEST_CASE(&range_transformed_warning));
|
||||||
|
|
||||||
|
return test;
|
||||||
|
}
|
Reference in New Issue
Block a user