Compare commits

...

9 Commits

Author SHA1 Message Date
4686882502 Create branches/filesystem-v3 for v2 removal
[SVN r77385]
2012-03-18 20:54:17 +00:00
df0fbd1d9d typo fix
[SVN r77114]
2012-02-25 01:09:58 +00:00
38cd16639d Fixes Ticket #6372
[SVN r76395]
2012-01-10 02:03:43 +00:00
1c51ad943a Fix for ticket #6338
[SVN r76238]
2011-12-31 05:48:27 +00:00
a25a7092d8 Patches from Tim Blechmann
[SVN r75976]
2011-12-16 00:14:49 +00:00
48e4118768 Fixes for MSVC workarounds from Freundlich: http://codepad.org/wRelwDJt
[SVN r75595]
2011-11-21 14:43:19 +00:00
0a520f6021 fix problem where sizeof(int) != sizeof(long)
[SVN r75563]
2011-11-20 10:59:09 +00:00
bbf10066bc C++11 patches by Michel Morin
[SVN r75394]
2011-11-07 22:07:05 +00:00
c2052a3c0c Fix Ticket #6067
[SVN r75318]
2011-11-04 20:37:33 +00:00
46 changed files with 203 additions and 104 deletions

View File

@ -1039,8 +1039,8 @@ rules for __element_conversion__.
[heading Header]
#include <boost/fusion/container/generation/make_list.hpp>
#include <boost/fusion/include/make_list.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/include/make_vector.hpp>
[heading Example]

0
doc/html/images/alert.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 603 B

0
doc/html/images/home.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 358 B

After

Width:  |  Height:  |  Size: 358 B

0
doc/html/images/next.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 336 B

0
doc/html/images/note.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 658 B

After

Width:  |  Height:  |  Size: 658 B

0
doc/html/images/prev.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 334 B

0
doc/html/images/smiley.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 867 B

0
doc/html/images/tip.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 640 B

After

Width:  |  Height:  |  Size: 640 B

0
doc/html/images/up.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 370 B

View File

@ -88,7 +88,7 @@ namespace boost { namespace fusion
template <typename Sequence>
cons(
Sequence const& seq
, typename disable_if<
, typename boost::disable_if<
mpl::or_<
is_convertible<Sequence, cons> // use copy ctor instead
, is_convertible<Sequence, Car> // use copy to car instead
@ -119,7 +119,7 @@ namespace boost { namespace fusion
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, Car>, cons&>::type
typename boost::disable_if<is_convertible<Sequence, Car>, cons&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type Iterator;

View File

@ -61,7 +61,7 @@ namespace boost { namespace fusion
template <typename Sequence>
vector1(
Sequence const& seq
, typename disable_if<is_convertible<Sequence, T0> >::type* = 0
, typename boost::disable_if<is_convertible<Sequence, T0> >::type* = 0
)
: base_type(base_type::init_from_sequence(seq)) {}
template <typename U0>
@ -72,7 +72,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -157,7 +157,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -242,7 +242,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -327,7 +327,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -412,7 +412,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -497,7 +497,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -582,7 +582,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -667,7 +667,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -752,7 +752,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -837,7 +837,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -73,7 +73,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -158,7 +158,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -243,7 +243,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -328,7 +328,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -413,7 +413,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -498,7 +498,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -583,7 +583,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -668,7 +668,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -753,7 +753,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -838,7 +838,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -73,7 +73,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -158,7 +158,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -243,7 +243,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -328,7 +328,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -413,7 +413,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -498,7 +498,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -583,7 +583,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -668,7 +668,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -753,7 +753,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -838,7 +838,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -73,7 +73,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -158,7 +158,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -243,7 +243,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -328,7 +328,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -413,7 +413,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -498,7 +498,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -583,7 +583,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -668,7 +668,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -753,7 +753,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -838,7 +838,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -73,7 +73,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -158,7 +158,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -243,7 +243,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -328,7 +328,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -413,7 +413,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -498,7 +498,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -583,7 +583,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -668,7 +668,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -753,7 +753,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;
@ -838,7 +838,7 @@ namespace boost { namespace fusion
return *this;
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -36,7 +36,7 @@ namespace boost { namespace fusion
: vec(rhs.vec) {}
template <typename Sequence>
vector(Sequence const& rhs)
: vec(rhs) {}
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
@ -116,6 +116,7 @@ namespace boost { namespace fusion
return vec.at_impl(mpl::int_<I::value>());
}
private:
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

View File

@ -36,7 +36,7 @@ namespace boost { namespace fusion
: vec(rhs.vec) {}
template <typename Sequence>
vector(Sequence const& rhs)
: vec(rhs) {}
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
@ -136,6 +136,7 @@ namespace boost { namespace fusion
return vec.at_impl(mpl::int_<I::value>());
}
private:
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

View File

@ -36,7 +36,7 @@ namespace boost { namespace fusion
: vec(rhs.vec) {}
template <typename Sequence>
vector(Sequence const& rhs)
: vec(rhs) {}
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
@ -156,6 +156,7 @@ namespace boost { namespace fusion
return vec.at_impl(mpl::int_<I::value>());
}
private:
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

View File

@ -36,7 +36,7 @@ namespace boost { namespace fusion
: vec(rhs.vec) {}
template <typename Sequence>
vector(Sequence const& rhs)
: vec(rhs) {}
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
@ -176,6 +176,7 @@ namespace boost { namespace fusion
return vec.at_impl(mpl::int_<I::value>());
}
private:
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

View File

@ -36,7 +36,7 @@ namespace boost { namespace fusion
: vec(rhs.vec) {}
template <typename Sequence>
vector(Sequence const& rhs)
: vec(rhs) {}
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
@ -196,6 +196,7 @@ namespace boost { namespace fusion
return vec.at_impl(mpl::int_<I::value>());
}
private:
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

View File

@ -104,7 +104,7 @@
BOOST_PP_CAT(vector, N)(
Sequence const& seq
#if (N == 1)
, typename disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
, typename boost::disable_if<is_convertible<Sequence, T0> >::type* /*dummy*/ = 0
#endif
)
: base_type(base_type::init_from_sequence(seq)) {}
@ -118,7 +118,7 @@
}
template <typename Sequence>
typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
typename boost::disable_if<is_convertible<Sequence, T0>, this_type&>::type
operator=(Sequence const& seq)
{
typedef typename result_of::begin<Sequence const>::type I0;

View File

@ -17,6 +17,38 @@
#include <boost/type_traits/is_base_of.hpp>
#include <boost/detail/workaround.hpp>
#if !defined(__WAVE__)
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
#define BOOST_FUSION_VECTOR_COPY_INIT() \
ctor_helper(rhs, is_base_of<vector, Sequence>()) \
#define BOOST_FUSION_VECTOR_CTOR_HELPER() \
static vector_n const& \
ctor_helper(vector const& rhs, mpl::true_) \
{ \
return rhs.vec; \
} \
\
template <typename T> \
static T const& \
ctor_helper(T const& rhs, mpl::false_) \
{ \
return rhs; \
}
#else
#define BOOST_FUSION_VECTOR_COPY_INIT() \
rhs \
#define BOOST_FUSION_VECTOR_CTOR_HELPER()
#endif
#endif // !defined(__WAVE__)
#if !defined(BOOST_FUSION_DONT_USE_PREPROCESSED_FILES)
#include <boost/fusion/container/vector/detail/preprocessed/vector.hpp>
#else
@ -76,11 +108,7 @@ namespace boost { namespace fusion
template <typename Sequence>
vector(Sequence const& rhs)
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
: vec(ctor_helper(rhs, is_base_of<vector, Sequence>())) {}
#else
: vec(rhs) {}
#endif
: vec(BOOST_FUSION_VECTOR_COPY_INIT()) {}
// Expand a couple of forwarding constructors for arguments
// of type (T0), (T0, T1), (T0, T1, T2) etc. Example:
@ -149,21 +177,7 @@ namespace boost { namespace fusion
private:
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
static vector_n const&
ctor_helper(vector const& rhs, mpl::true_)
{
return rhs.vec;
}
template <typename T>
static T const&
ctor_helper(T const& rhs, mpl::false_)
{
return rhs;
}
#endif
BOOST_FUSION_VECTOR_CTOR_HELPER()
vector_n vec;
};
}}

0
include/boost/fusion/functional/adapter/unfused.hpp Executable file → Normal file
View File

View File

@ -74,7 +74,7 @@ namespace boost { namespace fusion
{
template <typename Iter1, typename Iter2>
inline typename
enable_if<
boost::enable_if<
mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
, bool
>::type
@ -85,7 +85,7 @@ namespace boost { namespace fusion
template <typename Iter1, typename Iter2>
inline typename
enable_if<
boost::enable_if<
mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
, bool
>::type

View File

@ -37,7 +37,7 @@ namespace boost { namespace fusion
{
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_equality<Seq1, Seq2>
, bool
>::type

View File

@ -37,7 +37,7 @@ namespace boost { namespace fusion
{
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_comparison<Seq1, Seq2>
, bool
>::type

View File

@ -37,7 +37,7 @@ namespace boost { namespace fusion
{
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_comparison<Seq1, Seq2>
, bool
>::type

View File

@ -28,7 +28,7 @@ namespace boost { namespace fusion
{
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_comparison<Seq1, Seq2>
, bool
>::type

View File

@ -65,7 +65,7 @@ namespace boost { namespace fusion
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_comparison<Seq1, Seq2>
, bool
>::type

View File

@ -40,7 +40,7 @@ namespace boost { namespace fusion
{
template <typename Seq1, typename Seq2>
inline typename
enable_if<
boost::enable_if<
traits::enable_equality<Seq1, Seq2>
, bool
>::type

View File

@ -27,7 +27,7 @@ namespace boost { namespace fusion
{
template <typename Sequence>
inline typename
enable_if<
boost::enable_if<
fusion::traits::is_sequence<Sequence>
, std::istream&
>::type

View File

@ -29,7 +29,7 @@ namespace boost { namespace fusion
{
template <typename Sequence>
inline typename
enable_if<
boost::enable_if<
fusion::traits::is_sequence<Sequence>
, std::ostream&
>::type

View File

@ -12,6 +12,7 @@
#include <boost/fusion/support/deduce.hpp>
#include <boost/fusion/container/vector/convert.hpp>
#include <boost/fusion/view/transform_view.hpp>
#include <boost/config.hpp>
namespace boost { namespace fusion { namespace traits
@ -29,6 +30,13 @@ namespace boost { namespace fusion { namespace traits
struct result< Self(T) >
: fusion::traits::deduce<T>
{ };
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template <typename T>
typename result< deducer(T) >::type
operator()(T&&) const;
#endif
};
}

View File

@ -8,6 +8,7 @@
#if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101)
#define FUSION_STRICTEST_TRAVERSAL_20060123_2101
#include <boost/config.hpp>
#include <boost/mpl/or.hpp>
#include <boost/mpl/if.hpp>
#include <boost/fusion/support/category_of.hpp>
@ -53,6 +54,13 @@ namespace boost { namespace fusion
typedef typename stricter_traversal<tag1,tag2>::type type;
};
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template<typename StrictestSoFar, typename Next>
typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type
operator()(StrictestSoFar&&, Next&&) const;
#endif
};
template<typename Sequence>

View File

@ -33,7 +33,7 @@ namespace boost { namespace fusion
static type
call(Seq& s)
{
return * advance<N>(s.first);
return * fusion::advance<N>(s.first);
}
};
};

View File

@ -29,11 +29,28 @@
// - All other ranges point to ranges
// - The front of each range in the stack (besides the
// topmost) is the range above it
namespace boost { namespace fusion
{
template <typename First, typename Last>
struct iterator_range;
namespace result_of
{
template <typename Sequence, typename T>
struct push_back;
template <typename Sequence, typename T>
struct push_front;
}
template <typename Sequence, typename T>
typename result_of::push_back<Sequence const, T>::type
push_back(Sequence const& seq, T const& x);
template <typename Sequence, typename T>
typename result_of::push_front<Sequence const, T>::type
push_front(Sequence const& seq, T const& x);
}}
namespace boost { namespace fusion { namespace detail
@ -117,7 +134,7 @@ namespace boost { namespace fusion { namespace detail
segment_sequence<
typename result_of::push_front<
rest_type const
, typename recurse::type
, typename recurse::type
>::type
>
type;
@ -184,7 +201,7 @@ namespace boost { namespace fusion { namespace detail
{
return stack.cdr;
}
};
};
//auto make_segment_sequence_back(stack_end)
//{
@ -260,7 +277,7 @@ namespace boost { namespace fusion { namespace detail
segment_sequence<
typename result_of::push_back<
rest_type const
, typename recurse::type
, typename recurse::type
>::type
>
type;
@ -328,7 +345,7 @@ namespace boost { namespace fusion { namespace detail
return stack.cdr;
}
};
//auto make_segmented_range_reduce(stack_begin, stack_end)
//{
// if (size(stack_begin) == 1 && size(stack_end) == 1)
@ -373,7 +390,7 @@ namespace boost { namespace fusion { namespace detail
template <
typename StackBegin
, typename StackEnd
, bool SameSegment =
, bool SameSegment =
result_of::equal_to<
typename StackBegin::car_type::begin_type
, typename StackEnd::car_type::begin_type

View File

@ -1,7 +1,7 @@
/*=============================================================================
Copyright (c) 2009 Hartmut Kaiser
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)
==============================================================================*/
@ -27,7 +27,7 @@
namespace boost { namespace fusion { namespace result_of
{
template <typename Sequence
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, LONG_MAX)>
, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_VECTOR_SIZE, int I, INT_MAX)>
struct as_nview
{
typedef mpl::vector_c<

View File

@ -23,6 +23,8 @@
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/view/transform_view.hpp>
#include <boost/config.hpp>
namespace boost { namespace fusion
{
namespace detail
@ -35,12 +37,21 @@ namespace boost { namespace fusion
template<typename U>
struct result<addref(U)> : add_reference<U> {};
#ifdef BOOST_NO_RVALUE_REFERENCES
template <typename T>
typename add_reference<T>::type
operator()(T& x) const
{
return x;
}
#else
template <typename T>
typename result<addref(T)>::type
operator()(T&& x) const
{
return x;
}
#endif
};
struct addconstref

View File

@ -62,7 +62,7 @@ namespace boost { namespace fusion {
template<typename Seq>
typename result<endpoints(Seq const&)>::type
operator()(Seq const& seq)
operator()(Seq const& seq) const
{
return fusion::advance<M>(fusion::begin(seq));
}

View File

@ -16,6 +16,7 @@
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/config.hpp>
namespace boost { namespace fusion {
@ -35,6 +36,13 @@ namespace boost { namespace fusion {
mpl::identity<unused_type>,
result_of::value_at<typename remove_reference<Seq>::type, N> >
{};
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template<typename Seq>
typename result<poly_value_at(Seq)>::type
operator()(Seq&&) const;
#endif
};
}

View File

@ -16,6 +16,7 @@
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/config.hpp>
namespace boost { namespace fusion
{
@ -34,6 +35,13 @@ namespace boost { namespace fusion
mpl::identity<unused_type>,
result_of::value_of<It> >
{};
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template<typename It>
typename result<poly_value_of(It)>::type
operator()(It&&) const;
#endif
};
}

View File

@ -37,6 +37,8 @@
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/is_reference.hpp>
#include <boost/config.hpp>
namespace boost { namespace fusion {
namespace detail
@ -64,6 +66,13 @@ namespace boost { namespace fusion {
result_of::size<SeqClass>,
mpl::int_<high_int> >::type type;
};
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template<typename Seq>
typename result<seq_ref_size(Seq)>::type
operator()(Seq&&) const;
#endif
};
struct poly_min
@ -78,6 +87,13 @@ namespace boost { namespace fusion {
typedef typename remove_reference<Rhs>::type rhs;
typedef typename mpl::min<lhs, rhs>::type type;
};
// never called, but needed for decltype-based result_of (C++0x)
#ifndef BOOST_NO_RVALUE_REFERENCES
template<typename Lhs, typename Rhs>
typename result<poly_min(Lhs, Rhs)>::type
operator()(Lhs&&, Rhs&&) const;
#endif
};
template<typename Sequences>

View File

@ -72,6 +72,8 @@ struct fobj
int operator()(int i, object &, object_nc &) { return 10 + i; }
int operator()(int i, object &, object_nc &) const { return 11 + i; }
int operator()(int i, object const &, object_nc &);
int operator()(int i, object const &, object_nc &) const;
};
struct nullary_fobj

View File

@ -75,6 +75,8 @@ struct fobj
int operator()(int i, object &, object_nc &) { return 10 + i; }
int operator()(int i, object &, object_nc &) const { return 11 + i; }
int operator()(int i, object const &, object_nc &);
int operator()(int i, object const &, object_nc &) const;
};
struct nullary_fobj

View File

@ -71,7 +71,7 @@ void result_type_tests()
typedef fusion::unfused< test_func<> > t;
BOOST_TEST(( is_same< boost::result_of< t () >::type, long >::value ));
BOOST_TEST(( is_same< boost::result_of< t (int) >::type, long >::value ));
BOOST_TEST(( is_same< boost::result_of< t (int &) >::type, long >::value ));
}
int main()

View File

@ -85,7 +85,7 @@ void result_type_tests()
typedef fusion::unfused_typed< test_func<>, types0 > t0;
BOOST_TEST(( is_same< boost::result_of< t0 () >::type, long >::value ));
typedef fusion::unfused_typed< test_func<>, types1 > t1;
BOOST_TEST(( is_same< boost::result_of< t1 (int) >::type, long >::value ));
BOOST_TEST(( is_same< boost::result_of< t1 (long &) >::type, long >::value ));
}
#if defined(BOOST_MSVC) && BOOST_MSVC < 1400