Compare commits

..

1 Commits

Author SHA1 Message Date
c1fe4e78ab algo: Added tests for mutable functor 2018-07-03 00:48:40 +09:00
109 changed files with 455 additions and 447 deletions

View File

@ -21,48 +21,32 @@ matrix:
- env: BOGUS_JOB=true
include:
# trusty default (gcc 4.8.4)
- os: linux
env: TOOLSET=gcc CXXSTD=03,11,1y
- os: linux
dist: xenial
env: TOOLSET=gcc-4.4 CXXSTD=98,0x
addons:
apt:
packages:
- g++-4.4
sources:
- ubuntu-toolchain-r-test
#- os: linux
# dist: xenial
# env: TOOLSET=gcc-4.5 CXXSTD=03,0x
# addons:
# apt:
# packages:
# - g++-4.5
# sources:
# - ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-4.6 CXXSTD=03,0x
addons:
apt:
packages:
- g++-4.6
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-4.7 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.7
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-4.8 CXXSTD=03,11,1y
addons:
apt:
@ -72,8 +56,7 @@ matrix:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-4.9 CXXSTD=03,11,14
env: TOOLSET=gcc-4.9 CXXSTD=03,11,1y
addons:
apt:
packages:
@ -82,8 +65,7 @@ matrix:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-5 CXXSTD=03,11,14,17
env: TOOLSET=gcc-5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
@ -92,8 +74,7 @@ matrix:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-6 CXXSTD=03,11,14,17
env: TOOLSET=gcc-6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
@ -102,8 +83,7 @@ matrix:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=gcc-7 CXXSTD=03,11,14,17
env: TOOLSET=gcc-7 CXXSTD=03,11,14,1z
addons:
apt:
packages:
@ -111,93 +91,87 @@ matrix:
sources:
- ubuntu-toolchain-r-test
# trusty default (clang 3.9.0)
- os: linux
dist: xenial
env: TOOLSET=gcc-8 CXXSTD=03,11,14,17,2a
env: TOOLSET=clang CXXSTD=03,11,14,1z
addons:
apt:
packages:
- g++-8
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=clang-3.5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.5
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=clang-3.6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux
dist: xenial
env: TOOLSET=clang-3.7 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux
dist: xenial
env: TOOLSET=clang-3.8 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.8
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=clang-3.9 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.9
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: xenial
env: TOOLSET=clang-4.0 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-4.0
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-4.0
- os: linux
dist: xenial
env: TOOLSET=clang-5.0 CXXSTD=03,11,14,17,2a
env: TOOLSET=clang-5.0 CXXSTD=03,11,14,1z,2a
addons:
apt:
packages:
- clang-5.0
- libstdc++-4.9-dev
sources:
- llvm-toolchain-xenial-5.0
- os: linux
dist: xenial
env: TOOLSET=clang-6.0 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-6.0
sources:
- llvm-toolchain-xenial-6.0
- os: linux
dist: xenial
env: TOOLSET=clang-7.0 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-7
sources:
- llvm-toolchain-xenial-7
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-5.0
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
@ -237,7 +211,7 @@ install:
- git submodule init libs/typeof
- git submodule init libs/utility
- git submodule init libs/headers tools/boost_install tools/build
- git submodule init tools/build
- git submodule update
- rm -rf libs/fusion

View File

@ -1,29 +0,0 @@
# Copyright 2018 Mike Dev
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
#
# Partial (add_subdirectory only) and experimental CMake support
# Subject to change; please do not rely on the contents of this file yet
cmake_minimum_required(VERSION 3.5)
project(BoostFusion LANGUAGES CXX)
add_library(boost_fusion INTERFACE)
add_library(Boost::fusion ALIAS boost_fusion)
target_include_directories(boost_fusion INTERFACE include)
target_link_libraries(boost_fusion
INTERFACE
Boost::config
Boost::container_hash
Boost::core
Boost::function_types
Boost::mpl
Boost::preprocessor
Boost::static_assert
Boost::tuple
Boost::type_traits
Boost::typeof
Boost::utility
)

View File

@ -9,16 +9,16 @@ shallow_clone: true
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
TOOLSET: msvc-9.0
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
TOOLSET: msvc-10.0
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
TOOLSET: msvc-11.0
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
TOOLSET: msvc-12.0
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
@ -36,12 +36,6 @@ environment:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc-14.1
CXXSTD: latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: clang-win
CXXSTD: 14
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: clang-win
CXXSTD: 17
install:
- set BOOST_BRANCH=develop
@ -79,7 +73,7 @@ install:
- git submodule init libs/typeof
- git submodule init libs/utility
- git submodule init libs/headers tools/boost_install tools/build
- git submodule init tools/build
- git submodule update
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\fusion
- cmd /c bootstrap

View File

@ -23,6 +23,19 @@ various data structures, non-intrusively, as full fledged Fusion sequences.
#include <boost/fusion/adapted.hpp>
#include <boost/fusion/include/adapted.hpp>
Fusion sequences may also be adapted as fully conforming __mpl__ sequences (see
__intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and
Fusion. To make Fusion sequences fully conforming __mpl__ sequences, include:
#include <boost/fusion/mpl.hpp>
If you want bi-directional adaptation to and from __mpl__ and Fusion, simply
include:
#include <boost/fusion/include/mpl.hpp>
The header includes all the necessary headers.
[section:array Array]
This module provides adapters for arrays. Including the module
@ -132,21 +145,6 @@ header makes all __mpl__ sequences fully conforming fusion sequences.
std::cout << __at_c__<0>(v) << std::endl;
std::cout << __at_c__<1>(v) << std::endl;
[heading Bi-directional adaptation]
Fusion sequences may also be adapted as fully conforming __mpl__ sequences (see
__intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and
Fusion. To make Fusion sequences fully conforming __mpl__ sequences, include:
#include <boost/fusion/mpl.hpp>
If you want bi-directional adaptation to and from __mpl__ and Fusion, simply
include:
#include <boost/fusion/include/mpl.hpp>
The header includes all the necessary headers.
[heading See also]
__mpl__

View File

@ -1522,16 +1522,6 @@ each element. Analogously, the global `operator>>` has been overloaded
to extract __sequence__(s) from generic input streams by recursively
calling `operator>>` for each element.
Please note that, to display your adapted types via fusion IO system,
corresponding overloaded operators should be introduced to same namespace
of the type.
namespace your_awesome_library
{
using boost::fusion::operators::operator>>; // for input
using boost::fusion::operators::operator<<; // for output
...
The default delimiter between the elements is space, and the __sequence__
is enclosed in parenthesis. For Example:

View File

@ -93,9 +93,10 @@ presents only those elements for which its predicate evaluates to
[heading Template parameters]
[table
[[Parameter] [Description] [Default]]
[[`Sequence`] [A __forward_sequence__] []]
[[`Pred`] [A unary __mpl_lambda_expression__] []]
[[Parameter] [Description] [Default]]
[[`Sequence`] [A __forward_sequence__] []]
[[`Pred`] [Unary Metafunction
returning an `mpl::bool_`] []]
]
[heading Model of]
@ -270,7 +271,7 @@ defined in the implemented models.
[heading Description]
`zip_view` presents a view which iterates over a collection of __sequence__(s) in parallel. A `zip_view`
is constructed from a __sequence__ of references to the component `__sequence__`s.
is constructed from a __sequence__ of references to the component __sequence__s.
[heading Header]
@ -286,7 +287,7 @@ is constructed from a __sequence__ of references to the component `__sequence__`
[table
[[Parameter] [Description] [Default]]
[[`Sequences`] [A __forward_sequence__ of references to other Fusion `__sequence__`s] []]
[[`Sequences`] [A __forward_sequence__ of references to other Fusion __sequence__s] []]
]
[heading Model of]
@ -308,7 +309,7 @@ defined in __forward_sequence__.
[table
[[Expression] [Semantics]]
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component `__sequence__`s.]]
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component __sequence__s.]]
[[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]]
[[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]]
]

View File

@ -16,6 +16,10 @@
#include <boost/preprocessor/empty.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/comparison/less.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/fusion/adapted/struct/detail/extension.hpp>
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>

View File

@ -15,6 +15,9 @@
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/empty.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/fusion/adapted/struct/detail/extension.hpp>
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>

View File

@ -21,8 +21,8 @@
#include <boost/preprocessor/tuple/elem.hpp>
#include <boost/mpl/if.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/typeof/typeof.hpp>
@ -83,8 +83,20 @@
typedef \
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
typename) \
deduced_attr_type::type type; \
typedef type const_type;
boost::remove_const< \
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
typename) \
deduced_attr_type::type \
>::type type; \
\
typedef \
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
typename) \
boost::add_const< \
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
typename) \
deduced_attr_type::type \
>::type const_type;
#define BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE( \
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \

View File

@ -103,7 +103,9 @@ namespace boost { namespace fusion
}
};
BOOST_DELETED_FUNCTION(array_iterator& operator=(array_iterator const&))
private:
array_iterator<Array, Pos>& operator=(array_iterator<Array, Pos> const&);
};
}}

View File

@ -144,8 +144,9 @@ namespace boost { namespace fusion
: is_same<typename I1::identity, typename I2::identity>
{};
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(boost_tuple_iterator& operator= (boost_tuple_iterator const&))
boost_tuple_iterator& operator= (boost_tuple_iterator const&);
};
template <typename Null>

View File

@ -100,7 +100,9 @@ namespace boost { namespace fusion
}
};
BOOST_DELETED_FUNCTION(std_array_iterator& operator=(std_array_iterator const&))
private:
std_array_iterator<Array, Pos>& operator=(std_array_iterator<Array, Pos> const&);
};
}}

View File

@ -15,6 +15,10 @@
#include <boost/preprocessor/empty.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/comparison/less.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/fusion/adapted/struct/detail/extension.hpp>
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>

View File

@ -18,6 +18,10 @@
#include <boost/preprocessor/comparison/less.hpp>
#include <boost/preprocessor/seq/seq.hpp>
#include <boost/preprocessor/variadic/to_seq.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/fusion/adapted/struct/detail/extension.hpp>
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>

View File

@ -34,9 +34,7 @@
#include <boost/mpl/tag.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/typeof/typeof.hpp>

View File

@ -28,7 +28,8 @@
\
WRAPPED_TYPE& obj; \
\
BOOST_DELETED_FUNCTION(NAME& operator= (NAME const&)) \
private: \
NAME& operator= (NAME const&); \
}; \
\
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)

View File

@ -1,6 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2007
Distributed under 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)

View File

@ -2,7 +2,6 @@
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2009 Christopher Schmidt
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -14,6 +13,7 @@
#include <boost/mpl/apply.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/mpl/lambda.hpp>
#include <boost/mpl/or.hpp>
#include <boost/fusion/iterator/advance.hpp>
#include <boost/fusion/iterator/distance.hpp>
@ -22,9 +22,10 @@
#include <boost/fusion/sequence/intrinsic/begin.hpp>
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/support/category_of.hpp>
#include <boost/core/enable_if.hpp>
namespace boost { namespace fusion { namespace detail
namespace boost { namespace fusion {
struct random_access_traversal_tag;
namespace detail
{
template <typename Iterator, typename Pred>
struct apply_filter
@ -177,8 +178,8 @@ namespace boost { namespace fusion { namespace detail
choose_find_if<
First
, Last
, Pred
, traits::is_random_access<First>::value
, typename mpl::lambda<Pred>::type
, is_base_of<random_access_traversal_tag, typename traits::category_of<First>::type>::value
>::type
type;
@ -207,23 +208,31 @@ namespace boost { namespace fusion { namespace detail
return recursive_call(iter, found());
}
template <typename Iterator>
template <typename Iterator, typename Tag>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static typename boost::disable_if<traits::is_random_access<Iterator>, type>::type
iter_call(Iterator const& iter)
static type
choose_call(Iterator const& iter, Tag)
{
return recursive_call(iter);
}
template <typename Iterator>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static typename boost::enable_if<traits::is_random_access<Iterator>, type>::type
iter_call(Iterator const& iter)
static type
choose_call(Iterator const& iter, random_access_traversal_tag)
{
typedef typename result_of::distance<Iterator, type>::type N;
return fusion::advance<N>(iter);
}
template <typename Iterator>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
iter_call(Iterator const& iter)
{
return choose_call(iter, typename traits::category_of<Iterator>::type());
}
template <typename Sequence>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type

View File

@ -1,8 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
Distributed under 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)
==============================================================================*/
#if !defined(FUSION_REMOVE_IF_07162005_0818)
@ -11,6 +10,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/view/filter_view/filter_view.hpp>
#include <boost/mpl/not.hpp>
#include <boost/type_traits/is_same.hpp>
namespace boost { namespace fusion
{

View File

@ -111,8 +111,9 @@ namespace boost { namespace fusion {
Seq& seq_;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(deque_iterator& operator= (deque_iterator const&))
deque_iterator& operator= (deque_iterator const&);
};
}}

View File

@ -42,8 +42,9 @@ namespace boost { namespace fusion
cons_type& cons;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(cons_iterator& operator= (cons_iterator const&))
cons_iterator& operator= (cons_iterator const&);
};
struct nil_iterator : iterator_base<nil_iterator>

View File

@ -24,10 +24,12 @@ namespace boost { namespace fusion
struct value_at_key_impl<map_tag>
{
template <typename Sequence, typename Key>
struct apply : BOOST_FUSION_DECLTYPE_N3031((
struct apply
{
typedef typename BOOST_FUSION_IDENTIFIED_TYPE((
boost::declval<Sequence>().get_val(mpl::identity<Key>())
))
{};
)) type;
};
};
}
}}

View File

@ -36,6 +36,8 @@
# include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
#else
#include <boost/fusion/container/map/detail/map_impl.hpp>
///////////////////////////////////////////////////////////////////////////////
// C++11 interface
///////////////////////////////////////////////////////////////////////////////

View File

@ -156,8 +156,9 @@ namespace boost { namespace fusion
Seq& seq_;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(map_iterator& operator= (map_iterator const&))
map_iterator& operator= (map_iterator const&);
};
}}

View File

@ -47,10 +47,12 @@ namespace boost { namespace fusion
struct value_at_impl<vector_tag>
{
template <typename Sequence, typename N>
struct apply : BOOST_FUSION_DECLTYPE_N3031((
struct apply
{
typedef typename BOOST_FUSION_IDENTIFIED_TYPE((
vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())
))
{};
)) type;
};
};
}
}}

View File

@ -168,15 +168,9 @@ namespace boost { namespace fusion
: elem(std::forward<U>(rhs))
{}
using elem_type = T;
T elem;
};
// placed outside of vector_data due to GCC < 6 bug
template <std::size_t J, typename U>
static inline BOOST_FUSION_GPU_ENABLED
store<J, U> store_at_impl(store<J, U>*);
template <typename I, typename ...T>
struct vector_data;
@ -237,23 +231,32 @@ namespace boost { namespace fusion
assign(std::forward<Sequence>(seq), detail::index_sequence<M...>());
}
private:
template <std::size_t J>
using store_at = decltype(store_at_impl<J>(static_cast<vector_data*>(nullptr)));
template <std::size_t N, typename U>
static BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
U& at_detail(store<N, U>* this_)
{
return this_->elem;
}
template <std::size_t N, typename U>
static BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
U const& at_detail(store<N, U> const* this_)
{
return this_->elem;
}
public:
template <typename J>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename store_at<J::value>::elem_type& at_impl(J)
auto at_impl(J) -> decltype(at_detail<J::value>(&std::declval<vector_data&>()))
{
return store_at<J::value>::elem;
return at_detail<J::value>(this);
}
template <typename J>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename store_at<J::value>::elem_type const& at_impl(J) const
auto at_impl(J) const -> decltype(at_detail<J::value>(&std::declval<vector_data const&>()))
{
return store_at<J::value>::elem;
return at_detail<J::value>(this);
}
};
} // namespace boost::fusion::vector_detail

View File

@ -41,14 +41,11 @@ namespace boost { namespace fusion
vector_iterator(Vector& in_vec)
: vec(in_vec) {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
vector_iterator(vector_iterator const& rhs)
: vec(rhs.vec) {}
Vector& vec;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(vector_iterator& operator= (vector_iterator const&))
vector_iterator& operator= (vector_iterator const&);
};
}}

View File

@ -60,7 +60,7 @@ namespace boost { namespace fusion { namespace detail
template <typename PtrOrSmartPtr> struct non_const_pointee;
#if defined(BOOST_MSVC) || (defined(BOOST_BORLANDC) && !defined(BOOST_DISABLE_WIN32))
#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
# define BOOST_FUSION_TRAIT_DECL __cdecl
#else
# define BOOST_FUSION_TRAIT_DECL /**/

View File

@ -20,13 +20,13 @@ namespace boost { namespace fusion { namespace traits
{
template <typename Seq1, typename Seq2, typename Enable = void>
struct enable_equality
: mpl::and_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
: mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
{};
template <typename Seq1, typename Seq2, typename Enable = void>
struct enable_comparison
: mpl::and_<
traits::is_sequence<Seq1>, traits::is_sequence<Seq2>
mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
, mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
>
{};

View File

@ -118,7 +118,7 @@ namespace boost { namespace fusion
>::type
at_c(Sequence& seq)
{
return result_of::at_c<Sequence, N>::call(seq);
return fusion::at<mpl::int_<N> >(seq);
}
template <int N, typename Sequence>
@ -126,7 +126,7 @@ namespace boost { namespace fusion
inline typename result_of::at_c<Sequence const, N>::type
at_c(Sequence const& seq)
{
return result_of::at_c<Sequence const, N>::call(seq);
return fusion::at<mpl::int_<N> >(seq);
}
}}

View File

@ -144,8 +144,9 @@ namespace boost { namespace fusion
Stream& stream;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(string_ios_manip& operator= (string_ios_manip const&))
string_ios_manip& operator= (string_ios_manip const&);
};
} // detail

View File

@ -97,26 +97,15 @@ namespace std
#endif
// Workaround for compilers not implementing N3031 (DR743 and DR950).
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || \
BOOST_WORKAROUND(BOOST_GCC, < 40700) || \
defined(BOOST_CLANG) && (__clang_major__ == 3 && __clang_minor__ == 0)
# if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
namespace boost { namespace fusion { namespace detail
{
template <typename T>
using type_alias_t = T;
}}}
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
boost::fusion::detail::type_alias_t<decltype parenthesized_expr>
# else
// Workaround for compiler which doesn't compile decltype(expr)::type.
// It expects decltype(expr) deduced as mpl::identity<T>.
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || BOOST_WORKAROUND(BOOST_GCC, < 40700)
# include <boost/mpl/identity.hpp>
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
boost::mpl::identity<decltype parenthesized_expr>::type
# endif
# define BOOST_FUSION_IDENTIFIED_TYPE(parenthesized_expr) \
boost::mpl::identity<decltype parenthesized_expr>::type::type
#else
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
decltype parenthesized_expr
# define BOOST_FUSION_IDENTIFIED_TYPE(parenthesized_expr) \
decltype parenthesized_expr ::type
#endif

View File

@ -9,19 +9,20 @@
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/fusion/sequence/intrinsic/size.hpp>
#include <boost/core/enable_if.hpp>
#include <boost/mpl/bool.hpp>
#include <boost/mpl/equal_to.hpp>
namespace boost { namespace fusion { namespace detail
{
template <typename Sequence1, typename Sequence2, bool
= traits::is_sequence<Sequence1>::value &&
traits::is_sequence<Sequence2>::value>
template <typename Sequence1, typename Sequence2, typename = void, typename = void>
struct is_same_size : mpl::false_ {};
template <typename Sequence1, typename Sequence2>
struct is_same_size<Sequence1, Sequence2, true>
: mpl::bool_<result_of::size<Sequence1>::value ==
result_of::size<Sequence2>::value>
struct is_same_size<Sequence1, Sequence2,
typename enable_if<traits::is_sequence<Sequence1> >::type,
typename enable_if<traits::is_sequence<Sequence2> >::type>
: mpl::equal_to<result_of::size<Sequence1>, result_of::size<Sequence2> >
{};
}}}

View File

@ -14,7 +14,6 @@
namespace boost { namespace fusion
{
// Special tags:
struct non_fusion_tag;
struct sequence_facade_tag;
struct boost_tuple_tag; // boost::tuples::tuple tag
struct boost_array_tag; // boost::array tag
@ -33,13 +32,6 @@ namespace boost { namespace fusion
};
};
template <>
struct is_view_impl<non_fusion_tag>
{
template <typename T>
struct apply : mpl::false_ {};
};
template <>
struct is_view_impl<sequence_facade_tag>
{

View File

@ -28,11 +28,24 @@ namespace boost { namespace fusion
{
})
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
BOOST_DEFAULTED_FUNCTION(
unused_type(unused_type const&) BOOST_FUSION_NOEXCEPT_ON_DEFAULTED,
{
})
template <typename T>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
unused_type(T const&) BOOST_NOEXCEPT
{
}
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
unused_type const&
operator=(unused_type const&) const BOOST_NOEXCEPT
{
return *this;
}
};
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();

View File

@ -1,6 +1,5 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -9,10 +8,14 @@
#define FUSION_NEXT_IMPL_06052005_0900
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/next.hpp>
#include <boost/fusion/iterator/equal_to.hpp>
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/mpl/lambda.hpp>
#include <boost/mpl/quote.hpp>
#include <boost/mpl/bind.hpp>
#include <boost/mpl/placeholders.hpp>
namespace boost { namespace fusion
{
@ -45,13 +48,26 @@ namespace boost { namespace fusion
>::type
next_type;
typedef filter_iterator<category, next_type, last_type, pred_type> type;
typedef typename
detail::static_find_if<
next_type
, last_type
, mpl::bind1<
typename mpl::lambda<pred_type>::type
, mpl::bind1<mpl::quote1<result_of::value_of>,mpl::_1>
>
>
filter;
typedef filter_iterator<
category, typename filter::type, last_type, pred_type>
type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
return type(fusion::next(i.first));
return type(filter::iter_call(i.first));
}
};
};

View File

@ -51,19 +51,15 @@ namespace boost { namespace fusion
: seq(in_seq)
{}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
filter_view(filter_view const& rhs)
: seq(rhs.seq)
{}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
first_type first() const { return fusion::begin(seq); }
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
last_type last() const { return fusion::end(seq); }
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(filter_view& operator= (filter_view const&))
filter_view& operator= (filter_view const&);
};
}}

View File

@ -1,6 +1,5 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -10,6 +9,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/fusion/support/iterator_base.hpp>
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
@ -59,14 +59,11 @@ namespace boost { namespace fusion
filter_iterator(First const& in_first)
: first(filter::iter_call(first_converter::call(in_first))) {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
filter_iterator(filter_iterator const& rhs)
: first(rhs.first) {}
first_type first;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(filter_iterator& operator= (filter_iterator const&))
filter_iterator& operator= (filter_iterator const&);
};
}}

View File

@ -69,10 +69,10 @@ namespace boost { namespace fusion
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
concat_last_type concat_last() const { return fusion::end(seq2); }
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(joint_view& operator= (joint_view const&))
private:
// silence MSVC warning C4512: assignment operator could not be generated
joint_view& operator= (joint_view const&);
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
};

View File

@ -50,8 +50,9 @@ namespace boost { namespace fusion
first_type first;
concat_type concat;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(joint_view_iterator& operator= (joint_view_iterator const&))
joint_view_iterator& operator= (joint_view_iterator const&);
};
}}

View File

@ -47,8 +47,9 @@ namespace boost { namespace fusion
Sequence& seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(nview_iterator& operator= (nview_iterator const&))
nview_iterator& operator= (nview_iterator const&);
};
}}

View File

@ -44,8 +44,9 @@ namespace boost { namespace fusion
stored_seq_type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(repetitive_view& operator= (repetitive_view const&))
repetitive_view& operator= (repetitive_view const&);
};
}}

View File

@ -47,8 +47,9 @@ namespace boost { namespace fusion
Sequence& seq;
pos_type pos;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(repetitive_view_iterator& operator= (repetitive_view_iterator const&))
repetitive_view_iterator& operator= (repetitive_view_iterator const&);
};
}}

View File

@ -61,8 +61,9 @@ namespace boost { namespace fusion
last_type last() const { return fusion::end(seq); }
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(reverse_view& operator= (reverse_view const&))
reverse_view& operator= (reverse_view const&);
};
}}

View File

@ -48,8 +48,9 @@ namespace boost { namespace fusion
first_type first;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(reverse_view_iterator& operator= (reverse_view_iterator const&))
reverse_view_iterator& operator= (reverse_view_iterator const&);
};
}}

View File

@ -20,6 +20,11 @@
#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
#include <boost/config.hpp>
#if defined (BOOST_MSVC)
# pragma warning(push)
# pragma warning (disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct single_view_iterator_tag;
@ -41,7 +46,8 @@ namespace boost { namespace fusion
SingleView& view;
BOOST_DELETED_FUNCTION(single_view_iterator& operator=(single_view_iterator const&))
private:
single_view_iterator& operator=(single_view_iterator const&);
};
}}
@ -54,6 +60,10 @@ namespace std
}
#endif
#if defined (BOOST_MSVC)
# pragma warning(pop)
#endif
#endif

View File

@ -0,0 +1,38 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Distributed under 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)
==============================================================================*/
#if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936)
#define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936
#include <boost/fusion/support/config.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
struct void_;
namespace detail
{
template <typename F>
struct apply_transform_result
{
template <typename T0, typename T1 = void_>
struct apply
: boost::result_of<F(T0, T1)>
{};
template <typename T0>
struct apply<T0, void_>
: boost::result_of<F(T0)>
{};
};
}
}}
#endif

View File

@ -1,7 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -10,8 +9,9 @@
#define BOOST_FUSION_AT_IMPL_20061029_1946
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
#include <boost/fusion/sequence/intrinsic/at.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion {
struct transform_view_tag;
@ -29,8 +29,9 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef typename result_of::at<typename Seq::sequence_type, N>::type value_type;
typedef typename boost::result_of<F(value_type)>::type type;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::at<typename Seq::sequence_type, N>::type value_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Seq& seq)
@ -47,9 +48,10 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef typename result_of::at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename result_of::at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename boost::fusion::result_of::at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type call(Seq& seq)

View File

@ -1,6 +1,5 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -9,8 +8,10 @@
#define FUSION_DEREF_IMPL_07162005_1026
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/iterator/deref.hpp>
#include <boost/utility/result_of.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
namespace boost { namespace fusion
{
@ -33,8 +34,8 @@ namespace boost { namespace fusion
result_of::deref<typename Iterator::first_type>::type
value_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
@ -59,8 +60,8 @@ namespace boost { namespace fusion
result_of::deref<typename Iterator::first2_type>::type
value2_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
@ -69,7 +70,7 @@ namespace boost { namespace fusion
return i.f(*i.first1, *i.first2);
}
};
};
};
}
}}

View File

@ -1,7 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -10,8 +9,9 @@
#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion {
struct transform_view_tag;
@ -29,8 +29,9 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef typename result_of::value_at<typename Seq::sequence_type, N>::type value_type;
typedef typename boost::result_of<F(value_type)>::type type;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence_type, N>::type value_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
};
};
@ -41,9 +42,10 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef typename result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
};
};
}

View File

@ -1,6 +1,5 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
@ -9,8 +8,9 @@
#define FUSION_VALUE_OF_IMPL_07162005_1030
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/utility/result_of.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
namespace boost { namespace fusion
{
@ -33,8 +33,8 @@ namespace boost { namespace fusion
result_of::value_of<typename Iterator::first_type>::type
value_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
};
};
@ -52,8 +52,8 @@ namespace boost { namespace fusion
result_of::value_of<typename Iterator::first2_type>::type
value2_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
};
};
}

View File

@ -76,8 +76,9 @@ namespace boost { namespace fusion
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(transform_view& operator= (transform_view const&))
transform_view& operator= (transform_view const&);
};
// Unary Version
@ -112,8 +113,9 @@ namespace boost { namespace fusion
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(transform_view& operator= (transform_view const&))
transform_view& operator= (transform_view const&);
};
}}

View File

@ -42,8 +42,9 @@ namespace boost { namespace fusion
first_type first;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(transform_view_iterator& operator= (transform_view_iterator const&))
transform_view_iterator& operator= (transform_view_iterator const&);
};
// Binary Version
@ -69,8 +70,9 @@ namespace boost { namespace fusion
first2_type first2;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
BOOST_DELETED_FUNCTION(transform_view_iterator2& operator= (transform_view_iterator2 const&))
transform_view_iterator2& operator= (transform_view_iterator2 const&);
};
}}

View File

@ -66,7 +66,6 @@ project
[ run algorithm/zip2.cpp ]
[ run algorithm/zip_ignore.cpp ]
[ run algorithm/flatten.cpp ]
[ compile algorithm/ticket-5490.cpp ]
[ run sequence/as_deque.cpp ]
[ run sequence/as_list.cpp ]
@ -257,7 +256,6 @@ project
[ run sequence/swap.cpp ]
[ compile support/is_sequence.cpp ]
[ compile support/is_view.cpp ]
[ compile support/pair_deque.cpp ]
[ compile support/pair_list.cpp ]
[ compile support/pair_map.cpp ]

View File

@ -1,11 +1,12 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/algorithm/query/all.hpp>
@ -28,6 +29,19 @@ namespace
int search;
};
struct mutable_search_for : search_for
{
explicit mutable_search_for(int in_search)
: search_for(in_search)
{}
template <typename T>
bool operator()(T const& v)
{
return search_for::operator()(v);
}
};
}
int
@ -58,11 +72,20 @@ main()
}
{
typedef boost::mpl::vector_c<int, 1> mpl_vec;
boost::fusion::vector<int, short, double> t(1, 2, 3.3);
BOOST_TEST(!boost::fusion::all(t, search_for(1)));
BOOST_TEST(!boost::fusion::all(t, mutable_search_for(1)));
}
{
typedef boost::mpl::vector_c<int, 1, 1, 1> mpl_vec;
// We cannot use lambda here as mpl vec iterators return
// rvalues, and lambda needs lvalues.
BOOST_TEST(boost::fusion::all(mpl_vec(), search_for(1)));
BOOST_TEST(!boost::fusion::all(mpl_vec(), search_for(2)));
BOOST_TEST(boost::fusion::all(mpl_vec(), mutable_search_for(1)));
BOOST_TEST(!boost::fusion::all(mpl_vec(), mutable_search_for(2)));
}
return boost::report_errors();

View File

@ -2,11 +2,12 @@
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005 Eric Niebler
Copyright (c) Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/algorithm/query/any.hpp>
@ -29,6 +30,19 @@ namespace
int search;
};
struct mutable_search_for : search_for
{
explicit mutable_search_for(int in_search)
: search_for(in_search)
{}
template <typename T>
bool operator()(T const& v)
{
return search_for::operator()(v);
}
};
}
int
@ -44,12 +58,21 @@ main()
BOOST_TEST(!boost::fusion::any(t, boost::lambda::_1 == 3));
}
{
boost::fusion::vector<int, short, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::any(t, search_for(1)));
BOOST_TEST(boost::fusion::any(t, mutable_search_for(1)));
}
{
typedef boost::mpl::vector_c<int, 1, 2, 3> mpl_vec;
// We cannot use lambda here as mpl vec iterators return
// rvalues, and lambda needs lvalues.
BOOST_TEST(boost::fusion::any(mpl_vec(), search_for(2)));
BOOST_TEST(!boost::fusion::any(mpl_vec(), search_for(4)));
BOOST_TEST(boost::fusion::any(mpl_vec(), mutable_search_for(2)));
BOOST_TEST(!boost::fusion::any(mpl_vec(), mutable_search_for(4)));
}
return boost::report_errors();

View File

@ -1,11 +1,12 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005 Eric Niebler
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/algorithm/query/count_if.hpp>
@ -18,20 +19,29 @@ struct bind1st<F<T> > : public F<T>
{
T n;
bind1st(T n) : n(n) { }
bool operator()(T v) { return F<T>::operator()(n, v); }
bool operator()(T v) const { return F<T>::operator()(n, v); }
};
template <typename T>
struct mutable_equal_to : std::equal_to<T>
{
bool operator()(T l, T r) { return std::equal_to<T>::operator()(l, r); }
};
int
main()
{
{
boost::fusion::vector<int, short, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::count_if(t, bind1st<std::equal_to<double> >(2)) == 1);
BOOST_TEST(boost::fusion::count_if(t, bind1st<mutable_equal_to<double> >(2)) == 1);
}
{
boost::fusion::vector<int, short, double> t(1, 2, 3.3);
BOOST_TEST(boost::fusion::count_if(t, bind1st<std::equal_to<double> >(3)) == 0);
BOOST_TEST(boost::fusion::count_if(t, bind1st<mutable_equal_to<double> >(3)) == 0);
}
{
@ -39,6 +49,7 @@ main()
// Cannot use lambda here as mpl iterators return rvalues and lambda needs lvalues
BOOST_TEST(boost::fusion::count_if(mpl_vec(), bind1st<std::greater_equal<int> >(2)) == 2);
BOOST_TEST(boost::fusion::count_if(mpl_vec(), bind1st<std::less<int> >(2)) == 1);
BOOST_TEST(boost::fusion::count_if(mpl_vec(), bind1st<mutable_equal_to<int> >(2)) == 1);
}
return boost::report_errors();

View File

@ -1,27 +1,25 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include <boost/fusion/sequence/intrinsic/at.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/algorithm/iteration/fold.hpp>
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/fusion/algorithm/iteration/fold.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/next.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/next.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_reference.hpp>
#include <string>
@ -130,7 +128,7 @@ struct functor
}
};
struct visitor
struct mutable_visitor
{
typedef int result_type;
@ -248,7 +246,7 @@ main()
{
boost::fusion::vector<long> vec;
visitor v;
mutable_visitor v;
boost::fusion::fold(vec, 0, v);
}
}

View File

@ -1,11 +1,12 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/algorithm/query/none.hpp>
@ -28,6 +29,19 @@ namespace
int search;
};
struct mutable_search_for : search_for
{
explicit mutable_search_for(int in_search)
: search_for(in_search)
{}
template <typename T>
bool operator()(T const& v)
{
return search_for::operator()(v);
}
};
}
int
@ -45,12 +59,24 @@ main()
BOOST_TEST((!boost::fusion::none(t, boost::lambda::_1 < 3)));
}
{
boost::fusion::vector<int, short, double> t(1, 2, 3.3);
BOOST_TEST(!boost::fusion::none(t, search_for(1)));
BOOST_TEST(boost::fusion::none(t, search_for(3)));
BOOST_TEST(!boost::fusion::none(t, mutable_search_for(1)));
BOOST_TEST(boost::fusion::none(t, mutable_search_for(3)));
}
{
typedef boost::mpl::vector_c<int, 1, 2, 3> mpl_vec;
// We cannot use lambda here as mpl vec iterators return
// rvalues, and lambda needs lvalues.
BOOST_TEST(boost::fusion::none(mpl_vec(), search_for(4)));
BOOST_TEST(!boost::fusion::none(mpl_vec(), search_for(3)));
BOOST_TEST(boost::fusion::none(mpl_vec(), mutable_search_for(4)));
BOOST_TEST(!boost::fusion::none(mpl_vec(), mutable_search_for(3)));
}
return boost::report_errors();

View File

@ -1,19 +1,16 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include <boost/fusion/sequence/comparison/equal_to.hpp>
#include <boost/fusion/sequence/intrinsic/at.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/algorithm/transformation/replace_if.hpp>
#include <string>
struct gt3
{
@ -24,6 +21,15 @@ struct gt3
}
};
struct mutable_gt3 : gt3
{
template <typename T>
bool operator()(T x)
{
return gt3::operator()(x);
}
};
int
main()
{
@ -42,8 +48,18 @@ main()
{
std::cout << replace_if(t1, gt3(), -456) << std::endl;
BOOST_TEST((replace_if(t1, gt3(), -456)
== make_vector(1, 2, -456, -456, s, -456)));
BOOST_TEST_EQ(replace_if(t1, gt3(), -456), make_vector(1, 2, -456, -456, s, -456));
}
}
{
char const* s = "Ruby";
typedef vector<int, short, double, long, char const*, float> vector_type;
vector_type t1(1, 2, 3.3, 4, s, 5.5f);
{
std::cout << replace_if(t1, mutable_gt3(), -456) << std::endl;
BOOST_TEST_EQ(replace_if(t1, mutable_gt3(), -456), make_vector(1, 2, -456, -456, s, -456));
}
}

View File

@ -1,41 +0,0 @@
/*=============================================================================
Copyright (c) 2018 Kohei Takahashi
Distributed under 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)
==============================================================================*/
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/transform.hpp>
#include <boost/mpl/quote.hpp>
#include <boost/mpl/placeholders.hpp>
#include <boost/core/ignore_unused.hpp>
using namespace boost::fusion;
template <typename>
struct predicate {};
struct unique {};
template <typename>
struct meta_func
{
typedef unique result_type;
template <typename T>
unique operator()(const T&) const;
};
int main()
{
vector<int> v;
typedef predicate<boost::mpl::_1> lambda_t;
typedef boost::mpl::quote1<predicate> quote_t;
vector<unique> l = transform(v, meta_func<lambda_t>());
vector<unique> q = transform(v, meta_func<quote_t>());
boost::ignore_unused(l, q);
}

View File

@ -388,8 +388,7 @@ void test_sequence_n(Sequence & seq, mpl::int_<0>)
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ref_ctx,seq)) = that.data));
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ptr_ctx,seq)) = that.data));
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_spt_ctx,seq)) = that.data));
// disabling this test, since it tries to return local address which is undefined behavior
//~ BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ref_c_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ptr_c_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_spt_c_ctx,seq)));
@ -399,8 +398,7 @@ void test_sequence_n(Sequence & seq, mpl::int_<0>)
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ref_d_ctx,seq)) = that.data));
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_ptr_d_ctx,seq)) = that.data));
BOOST_TEST(that.data == (fusion::invoke(& members::data, fusion::join(sv_spt_d_ctx,seq)) = that.data));
// disabling this test, since it tries to return local address which is undefined behavior
//~ BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_d_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_obj_c_d_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ref_c_d_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_ptr_c_d_ctx,seq)));
BOOST_TEST(that.data == fusion::invoke(& members::data, fusion::join(sv_spt_c_d_ctx,seq)));

View File

@ -165,7 +165,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point>::value);
ns::point p(123, 456, 789);
std::cout << at_c<0>(p) << std::endl;
@ -238,7 +237,6 @@ main()
#if !BOOST_WORKAROUND(__GNUC__,<4)
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point_with_private_members>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point_with_private_members>::value);
ns::point_with_private_members p(123, 456, 789);
std::cout << at_c<0>(p) << std::endl;
@ -302,7 +300,7 @@ main()
BOOST_MPL_ASSERT((
boost::is_same<
boost::fusion::result_of::back<ns::point const>::type::type,
int
const int
>));
}

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_adt>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_adt>::value);
empty_adt e;
std::cout << e << std::endl;

View File

@ -93,7 +93,6 @@ main()
{
BOOST_MPL_ASSERT((traits::is_view<adapted::point>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::point>::value);
ns::point basep(123, 456, 789);
adapted::point p(basep);

View File

@ -43,7 +43,6 @@ main()
empty_adt empty;
{
BOOST_MPL_ASSERT((traits::is_view<adapted::empty_adt>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::empty_adt>::value);
adapted::empty_adt e(empty);
std::cout << e << std::endl;

View File

@ -84,7 +84,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point>::value);
ns::point p(123, 456, 789);
std::cout << at_c<0>(p) << std::endl;

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_adt>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_adt>::value);
empty_adt e;
std::cout << e << std::endl;

View File

@ -80,7 +80,6 @@ main()
{
BOOST_MPL_ASSERT((traits::is_view<adapted::point>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::point>::value);
ns::point basep(123, 456);
adapted::point p(basep);

View File

@ -43,7 +43,6 @@ main()
empty_adt empty;
{
BOOST_MPL_ASSERT((traits::is_view<adapted::empty_adt>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::empty_adt>::value);
adapted::empty_adt e(empty);
std::cout << e << std::endl;

View File

@ -72,7 +72,7 @@ namespace ns
#endif
struct empty_struct {};
BOOST_FUSION_ADAPT_ASSOC_STRUCT(empty_struct,)
BOOST_FUSION_ADAPT_ASSOC_STRUCT(empty_struct,);
int
main()
@ -86,7 +86,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point>::value);
ns::point p = {123, 456, 789};
std::cout << at_c<0>(p) << std::endl;

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct>::value);
empty_struct e;
std::cout << e << std::endl;

View File

@ -53,7 +53,7 @@ namespace ns
#endif
struct empty_struct {};
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(empty_struct, renamed_empty_struct,)
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(empty_struct, renamed_empty_struct,);
int
main()
@ -66,7 +66,6 @@ main()
{
BOOST_MPL_ASSERT((traits::is_view<adapted::point>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::point>::value);
ns::point basep = {123, 456};
adapted::point p(basep);

View File

@ -43,7 +43,6 @@ main()
empty_struct empty;
{
BOOST_MPL_ASSERT((traits::is_view<adapted::empty_struct>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::empty_struct>::value);
adapted::empty_struct e(empty);
std::cout << e << std::endl;

View File

@ -98,7 +98,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p(123, 456, 789);
std::cout << at_c<0>(p) << std::endl;

View File

@ -96,7 +96,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p = {123, 456, 789.43f};
std::cout << at_c<0>(p) << std::endl;

View File

@ -170,7 +170,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p = {123, 456, 789};
std::cout << at_c<0>(p) << std::endl;

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct>::value);
empty_struct e;
std::cout << e << std::endl;

View File

@ -87,7 +87,6 @@ main()
{
BOOST_MPL_ASSERT((traits::is_view<adapted::point>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::point>::value);
ns::point basep = {123, 456, 789};
adapted::point p(basep);

View File

@ -43,7 +43,6 @@ main()
empty_struct empty;
{
BOOST_MPL_ASSERT((traits::is_view<adapted::empty_struct>));
BOOST_STATIC_ASSERT(traits::is_view<adapted::empty_struct>::value);
adapted::empty_struct e(empty);
std::cout << e << std::endl;

View File

@ -107,7 +107,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p(123, 456, 789);
std::cout << at_c<0>(p) << std::endl;

View File

@ -96,7 +96,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p = {123, 456, 789};
std::cout << at_c<0>(p) << std::endl;

View File

@ -5,7 +5,7 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#include <boost/core/lightweight_test.hpp>
#include <boost/detail/lightweight_test.hpp>
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
#include <boost/fusion/sequence.hpp>
#include <boost/mpl/assert.hpp>
@ -185,5 +185,4 @@ int main()
BOOST_TEST(fusion::front(ec).get()=="marshall mathers");
BOOST_TEST(fusion::back(ec).get()==37);
}
return boost::report_errors();
}

View File

@ -22,8 +22,6 @@ int main()
BOOST_MPL_ASSERT((traits::is_sequence<array_type>));
BOOST_MPL_ASSERT_NOT((traits::is_view<array_type>));
BOOST_STATIC_ASSERT(traits::is_sequence<array_type>::value);
BOOST_STATIC_ASSERT(!traits::is_view<array_type>::value);
array_type arr = {1,2,3};

View File

@ -26,8 +26,6 @@ int main()
BOOST_MPL_ASSERT((traits::is_sequence<array_type>));
BOOST_MPL_ASSERT_NOT((traits::is_view<array_type>));
BOOST_STATIC_ASSERT(traits::is_sequence<array_type>::value);
BOOST_STATIC_ASSERT(!traits::is_view<array_type>::value);
array_type arr = {{1,2,3}};

View File

@ -46,7 +46,6 @@ main()
{
typedef boost::tuple<int, std::string> tuple_type;
BOOST_MPL_ASSERT_NOT((traits::is_view<tuple_type>));
BOOST_STATIC_ASSERT(!traits::is_view<tuple_type>::value);
tuple_type t(123, "Hola!!!");
std::cout << at_c<0>(t) << std::endl;

View File

@ -8,20 +8,6 @@
#include <boost/detail/lightweight_test.hpp>
#include <boost/fusion/sequence/comparison.hpp>
struct not_a_fusion_container {};
template <typename T>
inline bool operator==(not_a_fusion_container, T const&) { return true; }
template <typename T>
inline bool operator!=(not_a_fusion_container, T const&) { return true; }
template <typename T>
inline bool operator<(not_a_fusion_container, T const&) { return true; }
template <typename T>
inline bool operator<=(not_a_fusion_container, T const&) { return true; }
template <typename T>
inline bool operator>(not_a_fusion_container, T const&) { return true; }
template <typename T>
inline bool operator>=(not_a_fusion_container, T const&) { return true; }
void
equality_test()
{
@ -42,9 +28,6 @@ equality_test()
BOOST_TEST(!(v1 == v5));
BOOST_TEST(v5 != v1);
BOOST_TEST(!(v5 == v1));
BOOST_TEST(not_a_fusion_container() == v1);
BOOST_TEST(not_a_fusion_container() != v1);
}
void
@ -68,11 +51,6 @@ ordering_test()
FUSION_SEQUENCE<int, char, bool> v5(5, 'a', true);
v1 >= v5;
#endif
BOOST_TEST(not_a_fusion_container() > v1);
BOOST_TEST(not_a_fusion_container() >= v1);
BOOST_TEST(not_a_fusion_container() < v1);
BOOST_TEST(not_a_fusion_container() <= v1);
}

View File

@ -54,14 +54,11 @@ test()
using namespace test_detail;
nil empty;
(void)empty;
FUSION_SEQUENCE<> empty0;
(void)empty0;
#ifndef NO_CONSTRUCT_FROM_NIL
FUSION_SEQUENCE<> empty1(empty);
(void)empty1;
#endif
FUSION_SEQUENCE<int> t1;

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point>::value);
ns::point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -30,7 +30,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct>::value);
empty_struct e;
std::cout << e << std::endl;

View File

@ -46,7 +46,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -30,7 +30,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct<void> >));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct<void> >::value);
empty_struct<void> e;
std::cout << e << std::endl;

View File

@ -54,7 +54,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<ns::point>));
BOOST_STATIC_ASSERT(!traits::is_view<ns::point>::value);
ns::point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -30,7 +30,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct>::value);
empty_struct e;
std::cout << e << std::endl;

View File

@ -66,7 +66,6 @@ void run_test()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<Point>));
BOOST_STATIC_ASSERT(!traits::is_view<Point>::value);
Point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -30,7 +30,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<empty_struct>));
BOOST_STATIC_ASSERT(!traits::is_view<empty_struct>::value);
empty_struct e;
std::cout << e << std::endl;

View File

@ -42,7 +42,6 @@ main()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<point>));
BOOST_STATIC_ASSERT(!traits::is_view<point>::value);
point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -61,7 +61,6 @@ void run_test()
{
BOOST_MPL_ASSERT_NOT((traits::is_view<Point>));
BOOST_STATIC_ASSERT(!traits::is_view<Point>::value);
Point p(123, 456);
std::cout << at_c<0>(p) << std::endl;

View File

@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 1999-2003 Jaakko Jarvi
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2006 Dan Marsden
Copyright (c) 2006
Distributed under 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)

View File

@ -86,5 +86,4 @@ int main()
test_at_key<set<int[3]> >();
#endif
test_at_key<map<pair<int[3], int[3]> > >();
return boost::report_errors();
}

Some files were not shown because too many files have changed in this diff Show More