Compare commits
39 Commits
boost-1.55
...
boost-1.56
Author | SHA1 | Date | |
---|---|---|---|
a0c1ec2018 | |||
1fde7cc293 | |||
74a5d8804c | |||
8e4dd16b2d | |||
d2633616dc | |||
01ed85e0e5 | |||
6c904779af | |||
41e18be5cf | |||
fd3a18ce1a | |||
21a2621cce | |||
efad85a925 | |||
ad90e29cd6 | |||
a9ed19e3b8 | |||
26b28eff93 | |||
e113b31fdd | |||
44d5dca98b | |||
c04e912866 | |||
125a8b5957 | |||
e5b0f3c2e1 | |||
4b139914b1 | |||
c4f9f0d1b6 | |||
aa78028662 | |||
ec5f8dc5ec | |||
867c7e5dfb | |||
e1dc534877 | |||
14580550cf | |||
f2e7a184a0 | |||
266a7622ba | |||
de18e59c85 | |||
94618528b6 | |||
3b24ed44f8 | |||
7922147716 | |||
13d00bd6c2 | |||
56d0d48eb9 | |||
e83960d3e9 | |||
92ee36a556 | |||
52298c686e | |||
80b4ce43c5 | |||
b36426c8e3 |
120
doc/adapted.qbk
@ -244,7 +244,7 @@ __random_access_sequence__.
|
||||
|
||||
[heading Semantics]
|
||||
|
||||
The above macro generates the necessary code to adapt `struct_name` or an
|
||||
The above macro generates the necessary code to adapt `struct_name` or an
|
||||
arbitrary specialization of `struct_name` as a model of
|
||||
__random_access_sequence__.
|
||||
The sequence `(template_param0)(template_param1)...` declares the names of
|
||||
@ -287,9 +287,9 @@ namespace qualified name of the struct to be adapted.
|
||||
[section:adapt_struct_named BOOST_FUSION_ADAPT_STRUCT_NAMED]
|
||||
|
||||
[heading Description]
|
||||
BOOST_FUSION_ADAPT_STRUCT_NAMED and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS are
|
||||
macros that can be used to generate all the necessary boilerplate to make an
|
||||
arbitrary struct a model of __random_access_sequence__. The given struct is
|
||||
BOOST_FUSION_ADAPT_STRUCT_NAMED and BOOST_FUSION_ADAPT_STRUCT_NAMED_NS are
|
||||
macros that can be used to generate all the necessary boilerplate to make an
|
||||
arbitrary struct a model of __random_access_sequence__. The given struct is
|
||||
adapted using the given name.
|
||||
|
||||
[heading Synopsis]
|
||||
@ -312,7 +312,7 @@ adapted using the given name.
|
||||
[heading Semantics]
|
||||
|
||||
The above macros generate the necessary code to adapt `struct_name`
|
||||
as a model of __random_access_sequence__ while using `adapted_name` as the
|
||||
as a model of __random_access_sequence__ while using `adapted_name` as the
|
||||
name of the adapted struct.
|
||||
The sequence `(namespace0)(namespace1)...` declares the namespace
|
||||
for `adapted_name`. It yields to a fully qualified name for `adapted_name` of
|
||||
@ -427,7 +427,7 @@ __random_access_sequence__ and __associative_sequence__.
|
||||
|
||||
[heading Semantics]
|
||||
|
||||
The above macro generates the necessary code to adapt `struct_name` or an
|
||||
The above macro generates the necessary code to adapt `struct_name` or an
|
||||
arbitrary specialization of `struct_name` as a model of
|
||||
__random_access_sequence__ and __associative_sequence__.
|
||||
The sequence `(template_param0)(template_param1)...` declares the names of
|
||||
@ -463,7 +463,7 @@ namespace qualified name of the struct to be adapted.
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
// Any instantiated demo::employee is now a Fusion sequence.
|
||||
// It is also an associative sequence with
|
||||
// keys keys::name and keys::age present.
|
||||
@ -478,8 +478,8 @@ namespace qualified name of the struct to be adapted.
|
||||
[section:adapt_assoc_struct_named BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED]
|
||||
|
||||
[heading Description]
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED and BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS are
|
||||
macros that can be used to generate all the necessary boilerplate to make an
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED and BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED_NS are
|
||||
macros that can be used to generate all the necessary boilerplate to make an
|
||||
arbitrary struct a model of __random_access_sequence__ and
|
||||
__associative_sequence__. The given struct is adapted using the given name.
|
||||
|
||||
@ -539,7 +539,7 @@ namespace qualified name of the struct to be converted.
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
// boost::fusion::adapted::adapted_employee is now a Fusion sequence
|
||||
// referring to demo::employee
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
|
||||
@ -567,7 +567,7 @@ __random_access_sequence__.
|
||||
[heading Expression Semantics]
|
||||
|
||||
The above macro generates the necessary code to adapt `type_name`
|
||||
as a model of __random_access_sequence__.
|
||||
as a model of __random_access_sequence__.
|
||||
The sequence of
|
||||
[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N])]
|
||||
quadruples declares the types, const types, get-expressions and set-expressions
|
||||
@ -600,7 +600,7 @@ namespace qualified name of the class type to be adapted.
|
||||
|
||||
#include <boost/fusion/adapted/adt/adapt_adt.hpp>
|
||||
#include <boost/fusion/include/adapt_adt.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
@ -609,41 +609,41 @@ namespace qualified name of the class type to be adapted.
|
||||
private:
|
||||
std::string name;
|
||||
int age;
|
||||
|
||||
|
||||
public:
|
||||
void set_name(std::string const& n)
|
||||
{
|
||||
name=n;
|
||||
}
|
||||
|
||||
|
||||
void set_age(int a)
|
||||
{
|
||||
age=a;
|
||||
}
|
||||
|
||||
|
||||
std::string const& get_name()const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
int get_age()const
|
||||
{
|
||||
return age;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
BOOST_FUSION_ADAPT_ADT(
|
||||
demo::employee,
|
||||
(std::string const&, std::string const&, obj.get_name(), obj.set_name(val))
|
||||
(int, int, obj.get_age(), obj.set_age(val)))
|
||||
|
||||
|
||||
demo::employee e;
|
||||
front(e)="Edward Norton";
|
||||
back(e)=41;
|
||||
//Prints 'Edward Norton is 41 years old'
|
||||
std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
|
||||
|
||||
|
||||
[heading See also]
|
||||
|
||||
__adt_attribute_proxy__
|
||||
@ -670,7 +670,7 @@ __random_access_sequence__.
|
||||
|
||||
The above macro generates the necessary code to adapt `type_name`
|
||||
or an arbitrary specialization of `type_name`
|
||||
as a model of __random_access_sequence__.
|
||||
as a model of __random_access_sequence__.
|
||||
The sequence `(template_param0)(template_param1)...` declares the names of
|
||||
the template type parameters used.
|
||||
The sequence `(specialization_param0)(specialization_param1)...`
|
||||
@ -708,40 +708,40 @@ namespace qualified name of the template class type to be adapted.
|
||||
|
||||
#include <boost/fusion/adapted/adt/adapt_adt.hpp>
|
||||
#include <boost/fusion/include/adapt_adt.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
{
|
||||
template<typename Name, typename Age>
|
||||
struct employee
|
||||
{
|
||||
private:
|
||||
Name name;
|
||||
Age age;
|
||||
|
||||
|
||||
public:
|
||||
void set_name(Name const& n)
|
||||
{
|
||||
name=n;
|
||||
}
|
||||
|
||||
|
||||
void set_age(Age const& a)
|
||||
{
|
||||
age=a;
|
||||
}
|
||||
|
||||
|
||||
Name const& get_name()const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
Age const& get_age()const
|
||||
{
|
||||
return age;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
BOOST_FUSION_ADAPT_TPL_ADT(
|
||||
(Name)(Age),
|
||||
(demo::employee) (Name)(Age),
|
||||
@ -753,7 +753,7 @@ namespace qualified name of the template class type to be adapted.
|
||||
boost::fusion::back(e)=41;
|
||||
//Prints 'Edward Norton is 41 years old'
|
||||
std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
|
||||
|
||||
|
||||
[heading See also]
|
||||
|
||||
__adt_attribute_proxy__
|
||||
@ -778,7 +778,7 @@ __random_access_sequence__ and __associative_sequence__.
|
||||
[heading Expression Semantics]
|
||||
|
||||
The above macro generates the necessary code to adapt `type_name`
|
||||
as a model of __random_access_sequence__ and __associative_sequence__.
|
||||
as a model of __random_access_sequence__ and __associative_sequence__.
|
||||
The sequence of
|
||||
[^(attribute_type['N], attribute_const_type['N], get_expr['N], set_expr['N], key_type['N])]
|
||||
5-tuples declares the types, const types, get-expressions, set-expressions and key types
|
||||
@ -800,7 +800,7 @@ The actual return type of fusion's intrinsic sequence access (meta-)functions
|
||||
when in invoked with (an instance of) `type_name` is a proxy type.
|
||||
This type is implicitly convertible to the attribute type via [^get_expr['N]] and
|
||||
forwards assignment to the underlying element via [^set_expr['N]].
|
||||
The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__,
|
||||
The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__,
|
||||
__result_of_value_at__, __result_of_value_at_c__ and __result_of_value_at_key__) of the ['N]th element
|
||||
is [^attribute_type['N]] with const-qualifier and reference removed.
|
||||
|
||||
@ -811,7 +811,7 @@ namespace qualified name of the class type to be adapted.
|
||||
|
||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
||||
#include <boost/fusion/include/adapt_assoc_adt.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
@ -820,47 +820,47 @@ namespace qualified name of the class type to be adapted.
|
||||
private:
|
||||
std::string name;
|
||||
int age;
|
||||
|
||||
|
||||
public:
|
||||
void set_name(std::string const& n)
|
||||
{
|
||||
name=n;
|
||||
}
|
||||
|
||||
|
||||
void set_age(int a)
|
||||
{
|
||||
age=a;
|
||||
}
|
||||
|
||||
|
||||
std::string const& get_name()const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
int get_age()const
|
||||
{
|
||||
return age;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
namespace keys
|
||||
{
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
BOOST_FUSION_ADAPT_ASSOC_ADT(
|
||||
demo::employee,
|
||||
(std::string const&, std::string const&, obj.get_name(), obj.set_name(val), keys::name)
|
||||
(int, int, obj.get_age(), obj.set_age(val), keys::age))
|
||||
|
||||
|
||||
demo::employee e;
|
||||
at_key<keys::name>(e)="Edward Norton";
|
||||
at_key<keys::age>(e)=41;
|
||||
//Prints 'Edward Norton is 41 years old'
|
||||
std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
|
||||
|
||||
|
||||
[heading See also]
|
||||
|
||||
__adt_attribute_proxy__
|
||||
@ -887,7 +887,7 @@ __random_access_sequence__ and __associative_sequence__.
|
||||
|
||||
The above macro generates the necessary code to adapt `type_name`
|
||||
or an arbitrary specialization of `type_name`
|
||||
as a model of __random_access_sequence__ and __associative_sequence__.
|
||||
as a model of __random_access_sequence__ and __associative_sequence__.
|
||||
The sequence `(template_param0)(template_param1)...` declares the names of
|
||||
the template type parameters used.
|
||||
The sequence `(specialization_param0)(specialization_param1)...`
|
||||
@ -914,7 +914,7 @@ The actual return type of fusion's intrinsic sequence access (meta-)functions
|
||||
when in invoked with (an instance of) `type_name` is a proxy type.
|
||||
This type is implicitly convertible to the attribute type via [^get_expr['N]] and
|
||||
forwards assignment to the underlying element via [^set_expr['N]].
|
||||
The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__,
|
||||
The value type (that is the type returned by __result_of_value_of__, __result_of_value_of_data__,
|
||||
__result_of_value_at__, __result_of_value_at_c__ and __result_of_value_at_key__) of the ['N]th element
|
||||
is [^attribute_type['N]] with const-qualifier and reference removed.
|
||||
|
||||
@ -925,7 +925,7 @@ namespace qualified name of the template class type to be adapted.
|
||||
|
||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
||||
#include <boost/fusion/include/adapt_assoc_adt.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
namespace demo
|
||||
{
|
||||
@ -935,48 +935,48 @@ namespace qualified name of the template class type to be adapted.
|
||||
private:
|
||||
Name name;
|
||||
Age age;
|
||||
|
||||
|
||||
public:
|
||||
void set_name(Name const& n)
|
||||
{
|
||||
name=n;
|
||||
}
|
||||
|
||||
|
||||
void set_age(Age const& a)
|
||||
{
|
||||
age=a;
|
||||
}
|
||||
|
||||
|
||||
Name const& get_name()const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
Age const& get_age()const
|
||||
{
|
||||
return age;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
namespace keys
|
||||
{
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
BOOST_FUSION_ADAPT_ASSOC_TPL_ADT(
|
||||
(Name)(Age),
|
||||
(demo::employee) (Name)(Age),
|
||||
(Name const&, Name const&, obj.get_name(), obj.set_name(val), keys::name)
|
||||
(Age const&, Age const&, obj.get_age(), obj.set_age(val), keys::age))
|
||||
|
||||
|
||||
demo::employee<std::string, int> e;
|
||||
at_key<keys::name>(e)="Edward Norton";
|
||||
at_key<keys::age>(e)=41;
|
||||
//Prints 'Edward Norton is 41 years old'
|
||||
std::cout << e.get_name() << " is " << e.get_age() << " years old" << std::endl;
|
||||
|
||||
|
||||
[heading See also]
|
||||
|
||||
__adt_attribute_proxy__
|
||||
@ -1028,14 +1028,14 @@ defined in __random_access_sequence__.
|
||||
[[`struct_name(e0, e1,... en)`] [Creates an instance of `struct_name` with elements `e0`...`en`.]]
|
||||
[[`struct_name(fs)`] [Copy constructs an instance of `struct_name` from a __forward_sequence__ `fs`.]]
|
||||
[[`str = fs`] [Assigns from a __forward_sequence__ `fs`.]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
]
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/adapted/struct/define_struct.hpp>
|
||||
#include <boost/fusion/include/define_struct.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
|
||||
// demo::employee is a Fusion sequence
|
||||
@ -1097,14 +1097,14 @@ defined in __random_access_sequence__.
|
||||
[[`Str(e0, e1,... en)`] [Creates an instance of `Str` with elements `e0`...`en`.]]
|
||||
[[`Str(fs)`] [Copy constructs an instance of `Str` from a __forward_sequence__ `fs`.]]
|
||||
[[`str = fs`] [Assigns from a __forward_sequence__ `fs`.]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
]
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/adapted/struct/define_struct.hpp>
|
||||
#include <boost/fusion/include/define_struct.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
|
||||
// Any instantiated demo::employee is a Fusion sequence
|
||||
@ -1256,14 +1256,14 @@ defined in __random_access_sequence__ and __associative_sequence__.
|
||||
[[`struct_name(e0, e1,... en)`] [Creates an instance of `struct_name` with elements `e0`...`en`.]]
|
||||
[[`struct_name(fs)`] [Copy constructs an instance of `struct_name` from a __forward_sequence__ `fs`.]]
|
||||
[[`str = fs`] [Assigns from a __forward_sequence__ `fs`.]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
]
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
|
||||
#include <boost/fusion/include/define_assoc_struct.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
|
||||
namespace keys
|
||||
@ -1271,7 +1271,7 @@ defined in __random_access_sequence__ and __associative_sequence__.
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
// demo::employee is a Fusion sequence
|
||||
BOOST_FUSION_DEFINE_ASSOC_STRUCT(
|
||||
(demo), employee,
|
||||
@ -1332,14 +1332,14 @@ defined in __random_access_sequence__ and __associative_sequence__.
|
||||
[[`Str(e0, e1,... en)`] [Creates an instance of `Str` with elements `e0`...`en`.]]
|
||||
[[`Str(fs)`] [Copy constructs an instance of `Str` from a __forward_sequence__ `fs`.]]
|
||||
[[`str = fs`] [Assigns from a __forward_sequence__ `fs`.]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
[[`str.member_nameN`] [Access of struct member `member_nameN`]]
|
||||
]
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/adapted/struct/define_assoc_struct.hpp>
|
||||
#include <boost/fusion/include/define_assoc_struct.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
|
||||
namespace keys
|
||||
@ -1347,7 +1347,7 @@ defined in __random_access_sequence__ and __associative_sequence__.
|
||||
struct name;
|
||||
struct age;
|
||||
}
|
||||
|
||||
|
||||
// Any instantiated demo::employee is a Fusion sequence
|
||||
BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT(
|
||||
(Name)(Age), (demo), employee,
|
||||
|
@ -134,7 +134,7 @@ the first call) and [arg_desc] of `seq`.
|
||||
>
|
||||
typename result_of_name_macro<Sequence, State const, F>::type name_macro(
|
||||
Sequence& seq, State const& initial_state, F f);
|
||||
|
||||
|
||||
template<
|
||||
typename Sequence,
|
||||
typename State,
|
||||
@ -1841,6 +1841,50 @@ Constant. Returns a view which is lazily evaluated.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section flatten]
|
||||
|
||||
[heading Description]
|
||||
Returns a new sequence without nested sequences.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Sequence
|
||||
>
|
||||
typename __result_of_flatten__<Sequence>::type flatten(Sequence& seq);
|
||||
|
||||
template<
|
||||
typename Sequence
|
||||
>
|
||||
typename __result_of_flatten__<Sequence const>::type flatten(Sequence const& seq);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`seq`][A model of __forward_sequence__][Operation's argument]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
__flatten__(seq);
|
||||
|
||||
[*Return type]:
|
||||
|
||||
* A model of __forward_sequence__.
|
||||
|
||||
[*Semantics]: Returns a new sequence containing all the leaf elements of `seq`.
|
||||
|
||||
[heading Complexity]
|
||||
Constant. Returns a view which is lazily evaluated.
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/algorithm/transformation/flatten.hpp>
|
||||
#include <boost/fusion/include/flatten.hpp>
|
||||
|
||||
[heading Example]
|
||||
const __vector__<int, int, __vector__<int, int>, int> vec(1, 2, __make_vector__(3, 4), 5);
|
||||
assert(__flatten__(vec) == __make_vector__(1, 2, 3, 4, 5)));
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Metafunctions]
|
||||
@ -2633,6 +2677,44 @@ Constant.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section flatten]
|
||||
|
||||
[heading Description]
|
||||
Returns the result type of __flatten__, given the input sequence type.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Sequence
|
||||
>
|
||||
struct flatten
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
};
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`Sequence`][A model of __forward_sequence__][Operation's argument]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
__result_of_flatten__<Sequence>::type
|
||||
|
||||
[*Return type]:
|
||||
|
||||
* A model of __forward_sequence__.
|
||||
|
||||
[*Semantics]: Returns a sequence with all the leaf elements of `Sequence`.
|
||||
|
||||
[heading Complexity]
|
||||
Constant.
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/algorithm/transformation/flatten.hpp>
|
||||
#include <boost/fusion/include/flatten.hpp>
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
@ -44,5 +44,9 @@ This section summarizes significant changes to the Fusion library.
|
||||
* September 16, 2011: Added preprocessed files (using wave) to speed up
|
||||
compilation (Joel de Guzman)
|
||||
* October 8, 2011: Added adaptor for std::tuple (Joel de Guzman)
|
||||
* October 10, 2011: Made map random access (Brandon Kohn)
|
||||
* April 7, 2012: Added C++11 version of deque
|
||||
* May 19, 2012: Added BOOST_FUSION_DEFINE_STRUCT_INLINE by Nathan Ridge
|
||||
* September 1, 2012: Added move support for deque and vector
|
||||
|
||||
[endsect]
|
||||
|
@ -635,7 +635,7 @@ including any Fusion header to change the default. Example:
|
||||
[heading Model of]
|
||||
|
||||
* __associative_sequence__
|
||||
* __forward_sequence__
|
||||
* __random_access_sequence__
|
||||
|
||||
[variablelist Notation
|
||||
[[`M`] [A `map` type]]
|
||||
@ -647,7 +647,7 @@ including any Fusion header to change the default. Example:
|
||||
[heading Expression Semantics]
|
||||
|
||||
Semantics of an expression is defined only where it differs from, or is not
|
||||
defined in __random_access_sequence__ and __associative_sequence__.
|
||||
defined in __forward_sequence__ and __associative_sequence__.
|
||||
|
||||
[table
|
||||
[[Expression] [Semantics]]
|
||||
@ -949,7 +949,7 @@ Create a __map__ from one or more key/data pairs.
|
||||
, typename T0, typename T1,... typename TN>
|
||||
typename __result_of_make_map__<K0, K0,... KN, T0, T1,... TN>::type
|
||||
make_map(T0 const& x0, T1 const& x1... TN const& xN);
|
||||
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements,
|
||||
where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
@ -1007,11 +1007,11 @@ Example:
|
||||
|
||||
int i; char c; double d;
|
||||
...
|
||||
__vector_tie__(i, c, a);
|
||||
__vector_tie__(i, c, d);
|
||||
|
||||
The __vector_tie__ function creates a __vector__ of type
|
||||
`__vector__<int&, char&, double&>`. The same result could be achieved with the call
|
||||
__make_vector__(__boost_ref_call__(i), __boost_ref_call__(c), __boost_ref_call__(a))
|
||||
__make_vector__(__boost_ref_call__(i), __boost_ref_call__(c), __boost_ref_call__(d))
|
||||
[footnote see __boost_ref__ for details about `ref`].
|
||||
|
||||
A /tie/ can be used to 'unpack' another tuple into variables. E.g.:
|
||||
@ -1357,8 +1357,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]
|
||||
|
||||
|
@ -66,9 +66,9 @@ function objects to accept arbitrary calls. In other words, an unary function
|
||||
object can be implemented instead of (maybe heavily overloaded) function
|
||||
templates or function call operators.
|
||||
|
||||
The library provides both a strictly typed and a generic variant for this
|
||||
The library provides both a strictly typed and a generic variant for this
|
||||
transformation. The latter should be used in combination with
|
||||
__boost_func_forward__ to attack __the_forwarding_problem__.
|
||||
__boost_func_forward__ to attack __the_forwarding_problem__.
|
||||
|
||||
Both variants have a corresponding generator function template that returns an
|
||||
adapter instance for the given argument.
|
||||
@ -546,7 +546,7 @@ Returns the result type of __invoke_function_object__.
|
||||
|
||||
[heading Macros]
|
||||
|
||||
The following macros can be defined to change the maximum arity.
|
||||
The following macros can be defined to change the maximum arity.
|
||||
The default is 6.
|
||||
|
||||
* BOOST_FUSION_INVOKE_MAX_ARITY
|
||||
@ -1060,7 +1060,7 @@ signature is optimized automatically to avoid by-value parameters.]
|
||||
|
||||
[heading Macros]
|
||||
|
||||
The following macros can be defined to change the maximum arity.
|
||||
The following macros can be defined to change the maximum arity.
|
||||
The value used for these macros must not exceed `FUSION_MAX_VECTOR_SIZE`.
|
||||
The default is 6.
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
===============================================================================/]
|
||||
[library Fusion
|
||||
[quickbook 1.3]
|
||||
[version 2.1]
|
||||
[version 2.2]
|
||||
[authors [de Guzman, Joel], [Marsden, Dan], [Schwinger, Tobias]]
|
||||
[copyright 2001 2002 2003 2004 2005 2006 2011 2012 Joel de Guzman, Dan Marsden, Tobias Schwinger]
|
||||
[purpose Statically Typed Heterogeneous Data Structures and Algorithms]
|
||||
@ -131,6 +131,7 @@
|
||||
[def __transform_view__ [link fusion.view.transform_view `transform_view`]]
|
||||
[def __reverse_view__ [link fusion.view.reverse_view `reverse_view`]]
|
||||
[def __zip_view__ [link fusion.view.zip_view `zip_view`]]
|
||||
[def __flatten_view__ [link fusion.view.flatten_view `flatten_view`]]
|
||||
|
||||
[def __array__ [link fusion.adapted.array array]]
|
||||
[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]]
|
||||
@ -288,6 +289,8 @@
|
||||
[def __result_of_push_back__ [link fusion.algorithm.transformation.metafunctions.push_back `result_of::push_back`]]
|
||||
[def __push_front__ [link fusion.algorithm.transformation.functions.push_front `push_front`]]
|
||||
[def __result_of_push_front__ [link fusion.algorithm.transformation.metafunctions.push_front `result_of::push_front`]]
|
||||
[def __flatten__ [link fusion.algorithm.transformation.functions.flatten `flatten`]]
|
||||
[def __result_of_flatten__ [link fusion.algorithm.transformation.metafunctions.flatten `result_of::flatten`]]
|
||||
|
||||
[def __tr1_tuple_pair__ [link fusion.tuple.pairs `TR1 and std::pair`]]
|
||||
[def __tuple_get__ [link fusion.tuple.class_template_tuple.element_access `get`]]
|
||||
|
0
doc/html/images/alert.png
Normal file → Executable file
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 603 B |
0
doc/html/images/home.png
Normal file → Executable file
Before Width: | Height: | Size: 358 B After Width: | Height: | Size: 358 B |
0
doc/html/images/next.png
Normal file → Executable file
Before Width: | Height: | Size: 336 B After Width: | Height: | Size: 336 B |
0
doc/html/images/note.png
Normal file → Executable file
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B |
0
doc/html/images/prev.png
Normal file → Executable file
Before Width: | Height: | Size: 334 B After Width: | Height: | Size: 334 B |
0
doc/html/images/smiley.png
Normal file → Executable file
Before Width: | Height: | Size: 867 B After Width: | Height: | Size: 867 B |
0
doc/html/images/tip.png
Normal file → Executable file
Before Width: | Height: | Size: 640 B After Width: | Height: | Size: 640 B |
0
doc/html/images/up.png
Normal file → Executable file
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 370 B |
@ -1,16 +1,277 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
|
||||
|
||||
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) -->
|
||||
<title>Redirect to generated documentation</title>
|
||||
<meta http-equiv="refresh" content="0; URL=http://boost-sandbox.sourceforge.net/libs/fusion/doc/html/">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Chapter 1. Fusion 2.2</title>
|
||||
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Fusion 2.2">
|
||||
<link rel="next" href="fusion/preface.html" title="Preface">
|
||||
</head>
|
||||
<body>
|
||||
Automatic redirection failed, please go to
|
||||
<a href="http://boost-sandbox.sourceforge.net/libs/fusion/doc/html/">http://boost-sandbox.sourceforge.net/libs/fusion/doc/html/</a>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
|
||||
<td align="center"><a href="../../../../index.html">Home</a></td>
|
||||
<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
|
||||
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
|
||||
<td align="center"><a href="../../../../more/index.htm">More</a></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"><a accesskey="n" href="fusion/preface.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
|
||||
<div class="chapter">
|
||||
<div class="titlepage"><div>
|
||||
<div><h2 class="title">
|
||||
<a name="fusion"></a>Chapter 1. Fusion 2.2</h2></div>
|
||||
<div><div class="author"><h3 class="author">
|
||||
<span class="firstname">Joel</span> <span class="surname">de Guzman</span>
|
||||
</h3></div></div>
|
||||
<div><div class="author"><h3 class="author">
|
||||
<span class="firstname">Dan</span> <span class="surname">Marsden</span>
|
||||
</h3></div></div>
|
||||
<div><div class="author"><h3 class="author">
|
||||
<span class="firstname">Tobias</span> <span class="surname">Schwinger</span>
|
||||
</h3></div></div>
|
||||
<div><p class="copyright">Copyright © 2001-2006, 2011, 2012 Joel de Guzman,
|
||||
Dan Marsden, Tobias Schwinger</p></div>
|
||||
<div><div class="legalnotice">
|
||||
<a name="fusion.legal"></a><p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
</div></div>
|
||||
</div></div>
|
||||
<div class="toc">
|
||||
<p><b>Table of Contents</b></p>
|
||||
<dl>
|
||||
<dt><span class="section"><a href="fusion/preface.html">Preface</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/introduction.html">Introduction</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/quick_start.html">Quick Start</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/organization.html">Organization</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support.html">Support</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/support/is_sequence.html">is_sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/is_view.html">is_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/tag_of.html">tag_of</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/category_of.html">category_of</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/deduce.html">deduce</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/deduce_sequence.html">deduce_sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/support/pair.html">pair</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/iterator.html">Iterator</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts.html">Concepts</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/forward_iterator.html">Forward
|
||||
Iterator</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/bidirectional_iterator.html">Bidirectional
|
||||
Iterator</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/random_access_iterator.html">Random
|
||||
Access Iterator</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/associative_iterator.html">Associative
|
||||
Iterator</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions.html">Functions</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/deref.html">deref</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/next.html">next</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/prior.html">prior</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/distance.html">distance</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/advance.html">advance</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/advance_c.html">advance_c</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions/deref_data.html">deref_data</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/iterator/operator.html">Operator</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/iterator/operator/operator_unary_star.html">Operator
|
||||
*</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/operator/operator_equality.html">Operator
|
||||
==</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/operator/operator_inequality.html">Operator
|
||||
!=</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions.html">Metafunctions</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/value_of.html">value_of</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/deref.html">deref</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/next.html">next</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/prior.html">prior</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/equal_to.html">equal_to</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/distance.html">distance</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/advance.html">advance</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/advance_c.html">advance_c</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/key_of.html">key_of</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/value_of_data.html">value_of_data</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/metafunctions/deref_data.html">deref_data</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/sequence.html">Sequence</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts.html">Concepts</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/forward_sequence.html">Forward
|
||||
Sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/bidirectional_sequence.html">Bidirectional
|
||||
Sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/random_access_sequence.html">Random
|
||||
Access Sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/associative_sequence.html">Associative
|
||||
Sequence</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/sequence/intrinsic.html">Intrinsic</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/sequence/intrinsic/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/intrinsic/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/sequence/operator.html">Operator</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/sequence/operator/i_o.html">I/O</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/operator/comparison.html">Comparison</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/container.html">Container</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/container/vector.html">vector</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/cons.html">cons</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/list.html">list</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/deque.html">deque</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/front_extended_deque.html">front_extended_deque</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/back_extended_deque.html">back_extended_deque</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/set.html">set</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/map.html">map</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/generation.html">Generation</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/container/generation/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/generation/metafunctions.html">MetaFunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/container/conversion.html">Conversion</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/container/conversion/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/container/conversion/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/view.html">View</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/view/single_view.html">single_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/filter_view.html">filter_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/iterator_range.html">iterator_range</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/joint_view.html">joint_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/zip_view.html">zip_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/transform_view.html">transform_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/reverse_view.html">reverse_view</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/nview.html">nview</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/view/repetitive_view.html">repetitive_view</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/adapted.html">Adapted</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/adapted/array.html">Array</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/std__pair.html">std::pair</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/mpl_sequence.html">mpl sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/boost__array.html">boost::array</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/boost__tuple.html">boost::tuple</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_struct.html">BOOST_FUSION_ADAPT_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_tpl_struct.html">BOOST_FUSION_ADAPT_TPL_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_struct_named.html">BOOST_FUSION_ADAPT_STRUCT_NAMED</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_assoc.html">BOOST_FUSION_ADAPT_ASSOC_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_assoc_tpl_struct.html">BOOST_FUSION_ADAPT_ASSOC_TPL_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_assoc_struct_named.html">BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_adt.html">BOOST_FUSION_ADAPT_ADT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_tpl_adt.html">BOOST_FUSION_ADAPT_TPL_ADT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_assoc_adt.html">BOOST_FUSION_ADAPT_ASSOC_ADT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/adapt_assoc_tpl_adt.html">BOOST_FUSION_ADAPT_ASSOC_TPL_ADT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_struct.html">BOOST_FUSION_DEFINE_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_tpl_struct.html">BOOST_FUSION_DEFINE_TPL_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_struct_inline.html">BOOST_FUSION_DEFINE_STRUCT_INLINE</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_tpl_struct_inline.html">BOOST_FUSION_DEFINE_TPL_STRUCT_INLINE</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_assoc_struct.html">BOOST_FUSION_DEFINE_ASSOC_STRUCT</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/define_assoc_tpl_struct.html">BOOST_FUSION_DEFINE_ASSOC_TPL_STRUCT</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/algorithm.html">Algorithm</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/algorithm/auxiliary.html">Auxiliary</a></span></dt>
|
||||
<dd><dl><dt><span class="section"><a href="fusion/algorithm/auxiliary/functions.html">Functions</a></span></dt></dl></dd>
|
||||
<dt><span class="section"><a href="fusion/algorithm/iteration.html">Iteration</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/algorithm/iteration/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/algorithm/iteration/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/algorithm/query.html">Query</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/algorithm/query/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/algorithm/query/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/algorithm/transformation.html">Transformation</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/algorithm/transformation/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/algorithm/transformation/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/tuple.html">Tuple</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple.html">Class template tuple</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple/construction.html">Construction</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple/tuple_creation_functions.html">Tuple
|
||||
creation functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple/tuple_helper_classes.html">Tuple
|
||||
helper classes</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple/element_access.html">Element
|
||||
access</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/tuple/class_template_tuple/relational_operators.html">Relational
|
||||
operators</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/tuple/pairs.html">Pairs</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/extension.html">Extension</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/extension/ext_full.html">The Full Extension Mechanism</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/extension/sequence_facade.html">Sequence Facade</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/extension/iterator_facade.html">Iterator Facade</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/functional.html">Functional</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/functional/concepts.html">Concepts</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/functional/concepts/callable.html">Callable Object</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/concepts/reg_callable.html">Regular Callable
|
||||
Object</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/concepts/def_callable.html">Deferred Callable
|
||||
Object</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/concepts/poly.html">Polymorphic Function
|
||||
Object</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/functional/invocation.html">Invocation</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/functional/invocation/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/invocation/metafunctions.html">Metafunctions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/invocation/limits.html">Limits</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters.html">Adapters</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/fused.html">fused</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/fused_procedure.html">fused_procedure</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/fused_function_object.html">fused_function_object</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/unfused.html">unfused</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/unfused_typed.html">unfused_typed</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/adapters/limits.html">Limits</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/functional/generation.html">Generation</a></span></dt>
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/functional/generation/functions.html">Functions</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/functional/generation/metafunctions.html">Metafunctions</a></span></dt>
|
||||
</dl></dd>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/notes.html">Notes</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/change_log.html">Change log</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/acknowledgements.html">Acknowledgements</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/references.html">References</a></span></dt>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: May 10, 2013 at 05:54:18 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"><a accesskey="n" href="fusion/preface.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -161,6 +161,7 @@ the following invariants always hold:
|
||||
* __std_pair__ iterator
|
||||
* __boost_array__ iterator
|
||||
* __vector__ iterator
|
||||
* __map__ iterator
|
||||
* __single_view__ iterator
|
||||
* __iterator_range__ (where adapted sequence is a __bidirectional_sequence__)
|
||||
* __transform_view__ (where adapted sequence is a __bidirectional_sequence__)
|
||||
@ -206,6 +207,7 @@ the following expressions must be valid:
|
||||
|
||||
[heading Models]
|
||||
* __vector__ iterator
|
||||
* __map__ iterator
|
||||
* __std_pair__ iterator
|
||||
* __boost_array__ iterator
|
||||
* __single_view__ iterator
|
||||
@ -993,9 +995,9 @@ Returns the key type associated with the element referenced by an associative it
|
||||
[heading Example]
|
||||
typedef __map__<__pair__<float,int> > vec;
|
||||
typedef __result_of_begin__<vec>::type first;
|
||||
|
||||
|
||||
BOOST_MPL_ASSERT((boost::is_same<__result_of_key_of__<first>::type, float>));
|
||||
|
||||
|
||||
[endsect]
|
||||
|
||||
[section value_of_data]
|
||||
@ -1032,9 +1034,9 @@ Returns the type of the data property associated with the element referenced by
|
||||
[heading Example]
|
||||
typedef __map__<__pair__<float,int> > vec;
|
||||
typedef __result_of_begin__<vec>::type first;
|
||||
|
||||
|
||||
BOOST_MPL_ASSERT((boost::is_same<__result_of_value_of_data__<first>::type, int>));
|
||||
|
||||
|
||||
[endsect]
|
||||
|
||||
[section deref_data]
|
||||
|
@ -168,7 +168,7 @@ and __deref_data__) is a proxy type, an instance of
|
||||
has three template arguments:
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
{
|
||||
{
|
||||
template<
|
||||
typename Type
|
||||
, int Index
|
||||
@ -176,14 +176,14 @@ has three template arguments:
|
||||
>
|
||||
struct adt_attribute_proxy;
|
||||
}}}
|
||||
|
||||
|
||||
When adapting a class type, `adt_attribute_proxy` is specialized for every
|
||||
element of the adapted sequence, with `Type` being the class type that is
|
||||
adapted, `Index` the 0-based indices of the elements, and `Const` both `true`
|
||||
and `false`. The return type of fusion's intrinsic sequence access functions
|
||||
for the ['N]th element of an adapted class type `type_name` is
|
||||
[^adt_attribute_proxy<type_name, ['N], ['Const]>], with [^['Const]] being `true`
|
||||
for constant instances of `type_name` and `false` for non-constant ones.
|
||||
for constant instances of `type_name` and `false` for non-constant ones.
|
||||
|
||||
[variablelist Notation
|
||||
[[`type_name`]
|
||||
@ -205,7 +205,7 @@ for constant instances of `type_name` and `false` for non-constant ones.
|
||||
]
|
||||
|
||||
[*Expression Semantics]
|
||||
|
||||
|
||||
[table
|
||||
[[Expression] [Semantics]]
|
||||
[[[^proxy_type['N](inst)]] [Creates an instance of [^proxy_type['N]] with underlying object `inst`]]
|
||||
|
@ -142,8 +142,8 @@ __bidirectional_iterator__.
|
||||
__forward_sequence__
|
||||
|
||||
[variablelist Notation
|
||||
[[`s`] [A Forward Sequence]]
|
||||
[[`S`] [A Forward Sequence type]]
|
||||
[[`s`] [A Bidirectional Sequence]]
|
||||
[[`S`] [A Bidirectional Sequence type]]
|
||||
[[`o`] [An arbitrary object]]
|
||||
[[`e`] [A Sequence element]]
|
||||
]
|
||||
@ -189,6 +189,7 @@ are not defined in __forward_sequence__.
|
||||
* __std_pair__
|
||||
* __boost_array__
|
||||
* __vector__
|
||||
* __map__
|
||||
* __reverse_view__
|
||||
* __single_view__
|
||||
* __iterator_range__ (where adapted sequence is a Bidirectional Sequence)
|
||||
@ -212,7 +213,8 @@ __bidirectional_sequence__
|
||||
[variablelist Notation
|
||||
[[`s`] [A Random Access Sequence]]
|
||||
[[`S`] [A Random Access Sequence type]]
|
||||
[[`N`] [An __mpl_integral_constant__]]
|
||||
[[`M`] [An __mpl__ integral constant]]
|
||||
[[`N`] [An integral constant]]
|
||||
[[`o`] [An arbitrary object]]
|
||||
[[`e`] [A Sequence element]]
|
||||
]
|
||||
@ -226,12 +228,18 @@ any Random Access Sequence the following must be met:
|
||||
[[Expression] [Return type] [Type Requirements] [Runtime Complexity]]
|
||||
[[`__begin__(s)`] [__random_access_iterator__] [] [Constant]]
|
||||
[[`__end__(s)`] [__random_access_iterator__] [] [Constant]]
|
||||
[[`__at__<N>(s)`] [Any type] [] [Constant]]
|
||||
[[`__at__<N>(s) = o`] [Any type] [`s` is mutable and
|
||||
[[`__at_c__<N>(s)`] [Any type] [] [Constant]]
|
||||
[[`__at_c__<N>(s) = o`] [Any type] [`s` is mutable and
|
||||
`e = o`, where `e`
|
||||
is the first element
|
||||
in the sequence, is
|
||||
a valid expression.] [Constant]]
|
||||
a valid expression.] [Constant]]
|
||||
[[`__at__<M>(s)`] [Any type] [] [Constant]]
|
||||
[[`__at__<M>(s) = o`] [Any type] [`s` is mutable and
|
||||
`e = o`, where `e`
|
||||
is the first element
|
||||
in the sequence, is
|
||||
a valid expression.] [Constant]]
|
||||
]
|
||||
|
||||
[heading Result Type Expressions]
|
||||
@ -257,7 +265,8 @@ are not defined in __bidirectional_sequence__.
|
||||
|
||||
[table
|
||||
[[Expression] [Semantics]]
|
||||
[[`__at__<N>(s)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
[[`__at__<M>(s)`] [The Mth element from the beginning of the sequence; see __at__.]]
|
||||
[[`__at_c__<N>(s)`] [The Nth element from the beginning of the sequence; see __at_c__.]]
|
||||
]
|
||||
|
||||
[heading Models]
|
||||
@ -265,6 +274,7 @@ are not defined in __bidirectional_sequence__.
|
||||
* __std_pair__
|
||||
* __boost_array__
|
||||
* __vector__
|
||||
* __map__
|
||||
* __reverse_view__
|
||||
* __single_view__
|
||||
* __iterator_range__ (where adapted sequence is a Random Access Sequence)
|
||||
@ -281,6 +291,7 @@ An Associative Sequence allows efficient retrieval of elements based on keys.
|
||||
Like associative sequences in __mpl__, and unlike associative containers in
|
||||
__stl__, Fusion associative sequences have no implied ordering relation.
|
||||
Instead, type identity is used to impose an equivalence relation on keys.
|
||||
Keys are not checked for uniqueness.
|
||||
|
||||
[variablelist Notation
|
||||
[[`s`] [An Associative Sequence]]
|
||||
@ -640,15 +651,15 @@ in the sequence.
|
||||
|
||||
[heading Description]
|
||||
|
||||
Returns the N-th element from the beginning of the sequence.
|
||||
Returns the M-th element from the beginning of the sequence.
|
||||
|
||||
[heading Synopsis]
|
||||
|
||||
template <typename N, typename Sequence>
|
||||
template <typename M, typename Sequence>
|
||||
typename __result_of_at__<Sequence, N>::type
|
||||
at(Sequence& seq);
|
||||
|
||||
template <typename N, typename Sequence>
|
||||
template <typename M, typename Sequence>
|
||||
typename __result_of_at__<Sequence const, N>::type
|
||||
at(Sequence const& seq);
|
||||
|
||||
@ -657,25 +668,25 @@ Returns the N-th element from the beginning of the sequence.
|
||||
[table
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`seq`] [Model of __random_access_sequence__] [The sequence we wish to investigate.]]
|
||||
[[`N`] [An __mpl_integral_constant__] [An index from the beginning of the
|
||||
[[`M`] [An __mpl_integral_constant__] [An index from the beginning of the
|
||||
sequence.]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
||||
at<N>(seq);
|
||||
at<M>(seq);
|
||||
|
||||
[*Return type]: Returns a reference to the N-th element from the beginning
|
||||
of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the N-th
|
||||
[*Return type]: Returns a reference to the M-th element from the beginning
|
||||
of the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the M-th
|
||||
element from the beginning of the sequence, is a valid expression. Else,
|
||||
returns a type convertable to the N-th element from the beginning of the
|
||||
returns a type convertable to the M-th element from the beginning of the
|
||||
sequence.
|
||||
|
||||
[*Precondition]: `0 <= N::value < __size__(s)`
|
||||
[*Precondition]: `0 <= M::value < __size__(s)`
|
||||
|
||||
[*Semantics]: Equivalent to
|
||||
|
||||
__deref__(__advance__<N>(__begin__(s)))
|
||||
__deref__(__advance__<M>(__begin__(s)))
|
||||
|
||||
[heading Header]
|
||||
|
||||
@ -848,7 +859,7 @@ Performs an element by element swap of the elements in 2 sequences.
|
||||
|
||||
[table
|
||||
[[Parameters] [Requirement] [Description]]
|
||||
[[`seq1`, `seq2`] [Models of __forward_sequence__][The sequences whos elements we wish to swap.]]
|
||||
[[`seq1`, `seq2`][Models of __forward_sequence__][The sequences whos elements we wish to swap.]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
@ -1113,7 +1124,7 @@ the actual element type, use __result_of_value_at__].
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Seq,
|
||||
typename N>
|
||||
typename M>
|
||||
struct at
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
@ -1122,15 +1133,15 @@ the actual element type, use __result_of_value_at__].
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Seq`][A model of __random_access_sequence__][Argument sequence]]
|
||||
[[`N`][An __mpl_integral_constant__][Index of element]]
|
||||
[[`M`][An __mpl_integral_constant__][Index of element]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
result_of::at<Seq, N>::type
|
||||
result_of::at<Seq, M>::type
|
||||
|
||||
[*Return type]: Any type.
|
||||
|
||||
[*Semantics]: Returns the result type of using __at__ to access the `N`th element of `Seq`.
|
||||
[*Semantics]: Returns the result type of using __at__ to access the `M`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
|
||||
@ -1155,7 +1166,7 @@ get the actual element type, use __result_of_value_at_c__].
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Seq,
|
||||
int M>
|
||||
int N>
|
||||
struct at_c
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
@ -1164,15 +1175,15 @@ get the actual element type, use __result_of_value_at_c__].
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Seq`][A model of __random_access_sequence__][Argument sequence]]
|
||||
[[`M`][Positive integer index][Index of element]]
|
||||
[[`N`][Positive integer index][Index of element]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
result_of::at_c<Seq, M>::type
|
||||
result_of::at_c<Seq, N>::type
|
||||
|
||||
[*Return type]: Any type
|
||||
|
||||
[*Semantics]: Returns the result type of using __at_c__ to access the `M`th element of `Seq`.
|
||||
[*Semantics]: Returns the result type of using __at_c__ to access the `N`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
|
||||
@ -1194,7 +1205,7 @@ Returns the actual type at a given index from the __sequence__.
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Seq,
|
||||
typename N>
|
||||
typename M>
|
||||
struct value_at
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
@ -1203,15 +1214,15 @@ Returns the actual type at a given index from the __sequence__.
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Seq`][A model of __random_access_sequence__][Argument sequence]]
|
||||
[[`N`][An __mpl_integral_constant__][Index of element]]
|
||||
[[`M`][An __mpl_integral_constant__][Index of element]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
result_of::value_at<Seq, N>::type
|
||||
result_of::value_at<Seq, M>::type
|
||||
|
||||
[*Return type]: Any type.
|
||||
|
||||
[*Semantics]: Returns the actual type at the `N`th element of `Seq`.
|
||||
[*Semantics]: Returns the actual type at the `M`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
|
||||
@ -1233,7 +1244,7 @@ Returns the actual type at a given index from the __sequence__.
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename Seq,
|
||||
int M>
|
||||
int N>
|
||||
struct value_at_c
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
@ -1242,15 +1253,15 @@ Returns the actual type at a given index from the __sequence__.
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`Seq`][A model of __random_access_sequence__][Argument sequence]]
|
||||
[[`M`][Positive integer index][Index of element]]
|
||||
[[`N`][Positive integer index][Index of element]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
result_of::value_at_c<Seq, M>::type
|
||||
result_of::value_at_c<Seq, N>::type
|
||||
|
||||
[*Return type]: Any type
|
||||
|
||||
[*Semantics]: Returns the actual type at the `M`th element of `Seq`.
|
||||
[*Semantics]: Returns the actual type at the `N`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
|
||||
@ -1376,7 +1387,7 @@ Returns the actual element type associated with a Key from the __sequence__.
|
||||
|
||||
#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
|
||||
#include <boost/fusion/include/value_at_key.hpp>
|
||||
|
||||
|
||||
[heading Example]
|
||||
typedef __map__<__pair__<int, char>, __pair__<char, char>, __pair__<double, char> > mymap;
|
||||
BOOST_MPL_ASSERT((boost::is_same<__result_of_at_key__<mymap, int>::type, char>));
|
||||
|
63
doc/view.qbk
@ -483,7 +483,7 @@ defined in the implemented models.
|
||||
|
||||
[heading Description]
|
||||
|
||||
`nview` presents a view which iterates over a given __sequence__ in a specified order.
|
||||
`nview` presents a view which iterates over a given __sequence__ in a specified order.
|
||||
An `nview` is constructed from an arbitrary __sequence__ and a list of indicies specifying
|
||||
the elements to iterate over.
|
||||
|
||||
@ -507,15 +507,15 @@ the elements to iterate over.
|
||||
[[Parameter] [Description] [Default]]
|
||||
[[`Sequence`] [An arbitrary Fusion __forward_sequence__]
|
||||
[]]
|
||||
[[`Indicies`] [A `mpl::vector_c<int, ...>` holding the indicies defining
|
||||
[[`Indicies`] [A `mpl::vector_c<int, ...>` holding the indicies defining
|
||||
the required iteration order.] []]
|
||||
[[`I1`, `I2`, `I3`...] [A list of integers specifying the required
|
||||
[[`I1`, `I2`, `I3`...] [A list of integers specifying the required
|
||||
iteration order.] [`INT_MAX` for `I2`, `I3`...]]
|
||||
]
|
||||
|
||||
[heading Model of]
|
||||
|
||||
* __random_access_sequence__ (see __traversal_concept__)
|
||||
* __random_access_sequence__ (see __traversal_concept__)
|
||||
|
||||
[variablelist Notation
|
||||
[[`NV`] [A `nview` type]]
|
||||
@ -549,7 +549,6 @@ of the original Fusion __sequence__
|
||||
|
||||
[endsect]
|
||||
|
||||
|
||||
[section repetitive_view]
|
||||
|
||||
[heading Description]
|
||||
@ -615,4 +614,58 @@ printing a `repetitive_view` to `std::cout` is not.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section flatten_view]
|
||||
|
||||
[heading Description]
|
||||
|
||||
`flatten_view` presents a view which iterates over its elements recursively in depth-first order.
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/view/flatten_view.hpp>
|
||||
#include <boost/fusion/include/flatten_view.hpp>
|
||||
|
||||
[heading Synopsis]
|
||||
|
||||
template <typename Sequence>
|
||||
struct flatten_view;
|
||||
|
||||
[heading Template parameters]
|
||||
|
||||
[table
|
||||
[[Parameter] [Description] [Default]]
|
||||
[[`Sequence`] [A __forward_sequence__] []]
|
||||
]
|
||||
|
||||
[heading Model of]
|
||||
|
||||
* __forward_sequence__
|
||||
|
||||
[variablelist Notation
|
||||
[[`F`] [A `flatten_view` type]]
|
||||
[[`s`] [An instance of `Sequence`]]
|
||||
[[`f`, `f2`] [Instances of `F`]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
||||
Semantics of an expression is defined only where it differs from, or is not
|
||||
defined in __forward_sequence__.
|
||||
|
||||
[table
|
||||
[[Expression] [Semantics]]
|
||||
[[`F(s)`] [Creates a `flatten_view` given sequence, `s`.]]
|
||||
[[`F(f)`] [Copy constructs a `flatten_view` from another `flatten_view`, `f`.]]
|
||||
[[`f = f2`] [Assigns to a `flatten_view`, `f`, from another `flatten_view`, `f2`.]]
|
||||
]
|
||||
|
||||
[heading Example]
|
||||
typedef __vector__<int, int, __vector__<int, int>, int> sequence_type;
|
||||
sequence_type seq;
|
||||
__flatten_view__<sequence_type> flattened(seq);
|
||||
__copy__(__make_vector__(1, 2, 3, 4, 5), flattened);
|
||||
assert(seq == __make_vector__(1, 2, __make_vector__(3, 4), 5));
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
@ -3,7 +3,7 @@
|
||||
Copyright (c) 2011 Nathan Ridge
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_ADAPTED_30122005_1420)
|
||||
#define BOOST_FUSION_ADAPTED_30122005_1420
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/adt.hpp>
|
||||
#include <boost/fusion/adapted/array.hpp>
|
||||
#include <boost/fusion/adapted/boost_array.hpp>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt_named.hpp>
|
||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
||||
#include <boost/fusion/adapted/adt/adapt_adt_named.hpp>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_ADAPT_ADT_NAMED_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/adt/adapt_adt.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/proxy_type.hpp>
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_ADAPT_ASSOC_ADT_NAMED_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/proxy_type.hpp>
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
#include <boost/preprocessor/seq/elem.hpp>
|
||||
@ -39,6 +40,7 @@
|
||||
> \
|
||||
{ \
|
||||
template<class Val> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static void \
|
||||
boost_fusion_adapt_adt_impl_set( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj, \
|
||||
@ -47,6 +49,7 @@
|
||||
BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 3, ATTRIBUTE); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) \
|
||||
boost_fusion_adapt_adt_impl_get( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \
|
||||
@ -54,6 +57,7 @@
|
||||
return BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 2, ATTRIBUTE); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) \
|
||||
boost_fusion_adapt_adt_impl_get( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \
|
||||
@ -73,12 +77,14 @@
|
||||
{ \
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
adt_attribute_proxy( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& o) \
|
||||
: obj(&o) \
|
||||
{} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
type get() const \
|
||||
{ \
|
||||
return access::adt_attribute_access< \
|
||||
@ -87,6 +93,7 @@
|
||||
>::boost_fusion_adapt_adt_impl_get(*obj); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
operator type() const \
|
||||
{ \
|
||||
return get(); \
|
||||
@ -106,6 +113,7 @@
|
||||
{ \
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
adt_attribute_proxy( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \
|
||||
@ -113,6 +121,7 @@
|
||||
{} \
|
||||
\
|
||||
template<class Val> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
adt_attribute_proxy& \
|
||||
operator=(Val const& val) \
|
||||
{ \
|
||||
@ -123,6 +132,7 @@
|
||||
return *this; \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
type get() const \
|
||||
{ \
|
||||
return access::adt_attribute_access< \
|
||||
@ -131,6 +141,7 @@
|
||||
>::boost_fusion_adapt_adt_impl_get(*obj); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
operator type() const \
|
||||
{ \
|
||||
return get(); \
|
||||
@ -170,6 +181,7 @@
|
||||
> \
|
||||
type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type \
|
||||
call(Seq& obj) \
|
||||
{ \
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ADT_DETAIL_EXTENSION_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
#include <boost/fusion/support/as_const.hpp>
|
||||
@ -19,16 +20,17 @@ namespace boost { namespace fusion
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
template <typename T, typename Dummy>
|
||||
struct get_identity
|
||||
: remove_const<typename remove_reference<T>::type>
|
||||
{};
|
||||
template <typename T, typename Dummy>
|
||||
struct get_identity
|
||||
: remove_const<typename remove_reference<T>::type>
|
||||
{};
|
||||
}
|
||||
|
||||
namespace extension
|
||||
{
|
||||
// Overload as_const() to unwrap adt_attribute_proxy.
|
||||
template <typename T, int N, bool Const>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
typename adt_attribute_proxy<T, N, Const>::type as_const(const adt_attribute_proxy<T, N, Const>& proxy)
|
||||
{
|
||||
return proxy.get();
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_AT_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
#include <boost/type_traits/remove_extent.hpp>
|
||||
|
||||
@ -26,6 +27,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
add_reference<typename remove_extent<Seq>::type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_BEGIN_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
@ -30,6 +31,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_DEREF_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
#include <boost/type_traits/remove_extent.hpp>
|
||||
|
||||
@ -28,6 +29,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_END_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
#include <boost/type_traits/rank.hpp>
|
||||
#include <boost/type_traits/extent.hpp>
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_IS_SEQUENCE_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_IS_VIEW_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_SIZE_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/rank.hpp>
|
||||
#include <boost/type_traits/extent.hpp>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_VALUE_AT_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/remove_extent.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_ARRAY_VALUE_OF_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/remove_extent.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_BOOST_ARRAY_27122005_1035)
|
||||
#define BOOST_FUSION_BOOST_ARRAY_27122005_1035
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_array/array_iterator.hpp>
|
||||
#include <boost/fusion/adapted/boost_array/tag_of.hpp>
|
||||
#include <boost/fusion/adapted/boost_array/detail/is_view_impl.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250)
|
||||
#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <cstddef>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
@ -31,6 +32,7 @@ namespace boost { namespace fusion
|
||||
typedef mpl::int_<Pos> index;
|
||||
typedef Array array_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
array_iterator(Array& a)
|
||||
: array(a) {}
|
||||
|
||||
@ -55,6 +57,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const & it)
|
||||
{
|
||||
@ -69,6 +72,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::array_type array_type;
|
||||
typedef array_iterator<array_type, index::value + N::value> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -91,6 +95,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(I1 const&, I2 const&)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_AT_IMPL_27122005_1241)
|
||||
#define BOOST_FUSION_AT_IMPL_27122005_1241
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
|
||||
#include <boost/mpl/if.hpp>
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion {
|
||||
typename Sequence::const_reference,
|
||||
typename Sequence::reference>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117)
|
||||
#define BOOST_FUSION_BEGIN_IMPL_27122005_1117
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_array/array_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
@ -27,6 +28,7 @@ namespace boost { namespace fusion {
|
||||
{
|
||||
typedef array_iterator<Sequence, 0> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044)
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/config/no_tr1/utility.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_END_IMPL_27122005_1120)
|
||||
#define BOOST_FUSION_END_IMPL_27122005_1120
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_array/array_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
@ -27,6 +28,7 @@ namespace boost { namespace fusion {
|
||||
{
|
||||
typedef array_iterator<Sequence, Sequence::static_size> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648)
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221)
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030)
|
||||
#define FUSION_SEQUENCE_TAG_OF_27122005_1030
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
|
||||
#include <cstddef>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732)
|
||||
#define BOOST_FUSION_BOOST_TUPLE_09272006_0732
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_tuple/tag_of.hpp>
|
||||
#include <boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp>
|
||||
#include <boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851)
|
||||
#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/add_const.hpp>
|
||||
@ -47,6 +48,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef Cons cons_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
explicit boost_tuple_iterator(Cons& in_cons)
|
||||
: cons(in_cons) {}
|
||||
Cons& cons;
|
||||
@ -67,6 +69,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& iter)
|
||||
{
|
||||
@ -88,6 +91,7 @@ namespace boost { namespace fusion
|
||||
>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& iter)
|
||||
{
|
||||
@ -121,6 +125,7 @@ namespace boost { namespace fusion
|
||||
lazy_next_distance<I1, I2>
|
||||
>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(I1 const&, I2 const&)
|
||||
{
|
||||
@ -156,6 +161,7 @@ namespace boost { namespace fusion
|
||||
: boost_tuple_null_iterator<tuples::null_type>
|
||||
{
|
||||
template <typename Cons>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
explicit boost_tuple_iterator(Cons const&) {}
|
||||
};
|
||||
|
||||
@ -164,6 +170,7 @@ namespace boost { namespace fusion
|
||||
: boost_tuple_null_iterator<tuples::null_type const>
|
||||
{
|
||||
template <typename Cons>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
explicit boost_tuple_iterator(Cons const&) {}
|
||||
};
|
||||
|
||||
@ -172,6 +179,7 @@ namespace boost { namespace fusion
|
||||
: boost_tuple_null_iterator<tuples::tuple<> >
|
||||
{
|
||||
template <typename Cons>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
explicit boost_tuple_iterator(Cons const&) {}
|
||||
};
|
||||
|
||||
@ -180,6 +188,7 @@ namespace boost { namespace fusion
|
||||
: boost_tuple_null_iterator<tuples::tuple<> const>
|
||||
{
|
||||
template <typename Cons>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
explicit boost_tuple_iterator(Cons const&) {}
|
||||
};
|
||||
}}
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_AT_IMPL_09262006_1920)
|
||||
#define BOOST_FUSION_AT_IMPL_09262006_1920
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
|
||||
@ -37,6 +38,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719)
|
||||
#define BOOST_FUSION_BEGIN_IMPL_09272006_0719
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
@ -26,6 +27,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef boost_tuple_iterator<Sequence> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_END_IMPL_09272006_0721)
|
||||
#define BOOST_FUSION_END_IMPL_09272006_0721
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
@ -41,6 +42,7 @@ namespace boost { namespace fusion
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726)
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725)
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724)
|
||||
#define BOOST_FUSION_SIZE_IMPL_09272006_0724
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926)
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_TAG_OF_09262006_1900)
|
||||
#define BOOST_FUSION_TAG_OF_09262006_1900
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
|
||||
namespace boost { namespace tuples
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_MPL_31122005_1152)
|
||||
#define BOOST_FUSION_MPL_31122005_1152
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/mpl/detail/begin_impl.hpp>
|
||||
#include <boost/fusion/adapted/mpl/detail/end_impl.hpp>
|
||||
#include <boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_AT_IMPL_31122005_1642)
|
||||
#define BOOST_FUSION_AT_IMPL_31122005_1642
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
@ -27,6 +28,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef typename mpl::at<Sequence, N>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209)
|
||||
#define BOOST_FUSION_BEGIN_IMPL_31122005_1209
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
|
||||
#include <boost/mpl/begin.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion {
|
||||
>::type iterator;
|
||||
typedef mpl_iterator<iterator> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141)
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
|
||||
#include <boost/mpl/begin_end.hpp>
|
||||
#include <boost/mpl/is_sequence.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554)
|
||||
#define BOOST_FUSION_EMPTY_IMPL_31122005_1554
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/empty.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_END_IMPL_31122005_1237)
|
||||
#define BOOST_FUSION_END_IMPL_31122005_1237
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
|
||||
#include <boost/mpl/end.hpp>
|
||||
#include <boost/type_traits/add_const.hpp>
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion
|
||||
>::type iterator;
|
||||
typedef mpl_iterator<iterator> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647)
|
||||
#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/has_key.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505)
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048)
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508)
|
||||
#define BOOST_FUSION_SIZE_IMPL_31122005_1508
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/size.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -8,6 +8,7 @@
|
||||
#if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621)
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/at.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(FUSION_MPL_ITERATOR_05052005_0731)
|
||||
#define FUSION_MPL_ITERATOR_05052005_0731
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
|
||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
@ -37,6 +38,7 @@ namespace boost { namespace fusion
|
||||
typename Iterator::iterator_type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator)
|
||||
{
|
||||
@ -51,6 +53,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::next<typename Iterator::iterator_type>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator)
|
||||
{
|
||||
@ -65,6 +68,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::prior<typename Iterator::iterator_type>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator)
|
||||
{
|
||||
@ -79,6 +83,7 @@ namespace boost { namespace fusion
|
||||
typename mpl::advance<typename Iterator::iterator_type, N>::type>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& /*i*/)
|
||||
{
|
||||
@ -99,6 +104,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(I1 const&, I2 const&)
|
||||
{
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STD_PAIR_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
|
||||
#include <utility>
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_BOOST_TUPLE_09242011_1744)
|
||||
#define BOOST_FUSION_BOOST_TUPLE_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/std_tuple/detail/is_view_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_tuple/detail/is_sequence_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_tuple/detail/category_of_impl.hpp>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_AT_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_AT_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
#include <boost/mpl/if.hpp>
|
||||
@ -39,6 +40,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_BEGIN_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_BEGIN_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
@ -26,6 +27,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef std_tuple_iterator<Sequence, 0> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -4,8 +4,8 @@
|
||||
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_CATEGORY_OF_IMPL_09272006_0726)
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940)
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_04202013_0940
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_END_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_END_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/std_tuple/std_tuple_iterator.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <tuple>
|
||||
@ -30,6 +31,7 @@ namespace boost { namespace fusion
|
||||
static int const size = std::tuple_size<seq_type>::value;
|
||||
typedef std_tuple_iterator<Sequence, size> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_SIZE_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_SIZE_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <tuple>
|
||||
#include <boost/mpl/int.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_VALUE_AT_IMPL_09242011_1744)
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <tuple>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(FUSION_STD_TUPLE_ITERATOR_09112011_1905)
|
||||
#define FUSION_STD_TUPLE_ITERATOR_09112011_1905
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
@ -35,7 +36,7 @@ namespace boost { namespace fusion
|
||||
typename add_const<Tuple>::type, Index>
|
||||
identity;
|
||||
|
||||
explicit std_tuple_iterator(Tuple& tuple)
|
||||
BOOST_FUSION_GPU_ENABLED explicit std_tuple_iterator(Tuple& tuple)
|
||||
: tuple(tuple) {}
|
||||
|
||||
Tuple& tuple;
|
||||
@ -57,6 +58,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& iter)
|
||||
{
|
||||
@ -71,6 +73,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::tuple_type tuple_type;
|
||||
typedef std_tuple_iterator<tuple_type, index+N::value> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -93,6 +96,7 @@ namespace boost { namespace fusion
|
||||
{
|
||||
typedef mpl::int_<Last::index-First::index> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(First const&, Last const&)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
#if !defined(BOOST_FUSION_TAG_OF_09112011_1842)
|
||||
#define BOOST_FUSION_TAG_OF_09112011_1842
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <tuple>
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_assoc_struct_named.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_struct_named.hpp>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_NAMED_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/proxy_type.hpp>
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_NAMED_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/proxy_type.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_ASSOC_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/define_struct.hpp>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/define_struct.hpp>
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DEFINE_STRUCT_INLINE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/define_struct_inline.hpp>
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_ADAPT_BASE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
|
||||
@ -137,6 +138,7 @@
|
||||
>::type \
|
||||
type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type \
|
||||
call(Seq& seq) \
|
||||
{ \
|
||||
@ -156,6 +158,7 @@
|
||||
{ \
|
||||
typedef char const* type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type \
|
||||
call() \
|
||||
{ \
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP
|
||||
#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEFINE_STRUCT_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||
#include <boost/fusion/iterator/deref.hpp>
|
||||
@ -61,6 +62,7 @@
|
||||
ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
template<typename Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
self_type& \
|
||||
operator=(Seq const& seq) \
|
||||
{ \
|
||||
@ -119,6 +121,7 @@
|
||||
ATTRIBUTE_TUPEL_SIZE, \
|
||||
ATTRIBUTES_SEQ) \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME() \
|
||||
: BOOST_PP_SEQ_FOR_EACH_I_R( \
|
||||
1, \
|
||||
@ -127,6 +130,7 @@
|
||||
ATTRIBUTES_SEQ) \
|
||||
{} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(self_type const& other_self) \
|
||||
: BOOST_PP_SEQ_FOR_EACH_I_R( \
|
||||
1, \
|
||||
@ -136,6 +140,7 @@
|
||||
{} \
|
||||
\
|
||||
template<typename Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(Seq const& seq \
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ATTRIBUTES_SEQ)), \
|
||||
@ -155,6 +160,7 @@
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_CTOR_1( \
|
||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
NAME(boost::call_traits< \
|
||||
BOOST_PP_TUPLE_ELEM( \
|
||||
@ -167,6 +173,7 @@
|
||||
#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_1( \
|
||||
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
NAME(typename boost::call_traits< \
|
||||
typename boost::fusion::detail::get_first_arg< \
|
||||
@ -203,6 +210,7 @@
|
||||
#define BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_N( \
|
||||
TEMPLATE_PARAMS_SEQ, NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
|
||||
1, \
|
||||
BOOST_FUSION_DEFINE_TPL_STRUCT_CTOR_ARG_I, \
|
||||
@ -230,6 +238,7 @@
|
||||
#define BOOST_FUSION_DEFINE_STRUCT_CTOR_N( \
|
||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(BOOST_PP_SEQ_FOR_EACH_I_R( \
|
||||
1, \
|
||||
BOOST_FUSION_DEFINE_STRUCT_CTOR_ARG_I, \
|
||||
@ -271,10 +280,12 @@
|
||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTE_TUPEL_SIZE) \
|
||||
\
|
||||
template<typename Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(Seq const&) \
|
||||
{} \
|
||||
\
|
||||
template<typename Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
self_type& \
|
||||
operator=(Seq const& seq) \
|
||||
{ \
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_DEFINE_STRUCT_INLINE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/fusion/support/category_of.hpp>
|
||||
#include <boost/fusion/sequence/sequence_facade.hpp>
|
||||
@ -36,7 +37,7 @@
|
||||
// an alternate implementation for these metafunctions is used that does not
|
||||
// require such specializations. The alternate implementation takes longer
|
||||
// to compile so its use is restricted to the offending compilers.
|
||||
// For MSVC, the bug was was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
|
||||
// For MSVC, the bug was reported at https://connect.microsoft.com/VisualStudio/feedback/details/757891/c-compiler-error-involving-partial-specializations-of-nested-templates
|
||||
// For GCC, 4.4 and earlier are no longer maintained so there is no need
|
||||
// to report a bug.
|
||||
#if defined(BOOST_MSVC) || (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ <= 4)))
|
||||
@ -112,6 +113,7 @@
|
||||
struct deref<SPEC_TYPE, N> > \
|
||||
{ \
|
||||
typedef typename boost_fusion_detail_Sq::t##N##_type TYPE_QUAL& type; \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(CALL_ARG_TYPE, N> const& iter) \
|
||||
{ \
|
||||
return iter.seq_.BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||
@ -161,6 +163,7 @@
|
||||
typename boost_fusion_detail_Sq::t##N##_type& \
|
||||
>::type type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
{ \
|
||||
return sq. BOOST_PP_TUPLE_ELEM(2, 1, ATTRIBUTE); \
|
||||
@ -205,6 +208,7 @@
|
||||
result_raw_type \
|
||||
>::type type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(iterator_raw_type const& iter) \
|
||||
{ \
|
||||
return boost::fusion::at_c<index>(iter.ref_vec); \
|
||||
@ -332,6 +336,7 @@
|
||||
typedef boost::mpl::int_<N> index; \
|
||||
typedef boost_fusion_detail_Seq sequence_type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_FUSION_ITERATOR_NAME(NAME)(boost_fusion_detail_Seq& seq) \
|
||||
: seq_(seq) \
|
||||
BOOST_FUSION_DEFINE_ITERATOR_WKND_INIT_LIST_ENTRIES( \
|
||||
@ -354,6 +359,7 @@
|
||||
boost_fusion_detail_It::index::value + 1 \
|
||||
> type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
@ -368,6 +374,7 @@
|
||||
boost_fusion_detail_It::index::value - 1 \
|
||||
> type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
@ -385,6 +392,7 @@
|
||||
typename boost_fusion_detail_It1::index \
|
||||
>::type type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_It1 const& it1, \
|
||||
boost_fusion_detail_It2 const& it2) \
|
||||
{ \
|
||||
@ -404,6 +412,7 @@
|
||||
+ boost_fusion_detail_M::value \
|
||||
> type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_It const& it) \
|
||||
{ \
|
||||
return type(it.seq_); \
|
||||
@ -436,12 +445,14 @@
|
||||
(NAME, ATTRIBUTES_SEQ) \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME& operator=(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
@ -454,6 +465,7 @@
|
||||
typedef BOOST_FUSION_ITERATOR_NAME(NAME)<boost_fusion_detail_Sq, 0> \
|
||||
type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
{ \
|
||||
return type(sq); \
|
||||
@ -468,6 +480,7 @@
|
||||
ATTRIBUTES_SEQ_SIZE \
|
||||
> type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
static type call(boost_fusion_detail_Sq& sq) \
|
||||
{ \
|
||||
return type(sq); \
|
||||
|
@ -28,6 +28,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
|
||||
typedef typename impl::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static
|
||||
type
|
||||
call(It const& it)
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/basic_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
@ -32,6 +33,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
@ -55,6 +57,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_EXTENSION_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/category_of.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -10,6 +10,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
|
||||
#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion { namespace extension
|
||||
|
@ -9,6 +9,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_NAMESPACE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/dec.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
|
@ -9,6 +9,7 @@
|
||||
#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP
|
||||
#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_PROXY_TYPE_HPP
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/namespace.hpp>
|
||||
|
||||
#define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE_IMPL( \
|
||||
@ -18,6 +19,7 @@
|
||||
\
|
||||
struct NAME \
|
||||
{ \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(WRAPPED_TYPE& in_obj) \
|
||||
: obj(in_obj) \
|
||||
{} \
|
||||
|