Compare commits

..

244 Commits

Author SHA1 Message Date
53da4e0b2c Fix include guard in adapt_assoc_adt.hpp (#273) 2024-05-15 17:13:08 +08:00
7d4c03fa03 Don't include std stream headers ourselves (#270) 2023-03-18 16:31:22 +08:00
5d19cc2d57 Remove template arguments redefinition workaround for VS2022 update 5. (#268)
Update 5 adds /Zc:templateScope flag which causes compile errors in
typedefs redefining template parameters.
2023-02-28 07:29:50 +08:00
049303436c Old permissions restored (#265) 2023-02-25 16:45:19 +08:00
8c32ebea0b Removed executable flags from files. (#267) 2023-02-21 08:35:45 +08:00
3044c2beaf missing make_pair() for r-value refs (#264)
* missing make_pair() for r-value refs

hello guys!

the `make_pair()` for r-value refs is required for r-value, otherwise `non-copyable` but `movable` can be constructed.


thanks!

* fix for prev commit

conditional support for r-values was fixed

* the test case was added

* fix for prev commit

* Update Jamfile

* one more fix for Jamfile

* the forgotten r-value ctor was added

* ah, they should be conditional
2023-02-11 10:10:25 +08:00
d6298309fb Implemented ability to set fallback for tag_of (#263) 2022-12-22 08:16:10 +08:00
0a2da9d0ac Add describe dependency (#262)
* Add describe dependency

* Add mp11 dependency
2022-12-21 13:49:11 +08:00
036b90cd5d Fix Clang 13 -Wdeprecated-copy warnings (#261)
Clang 13 have new warning under the same group
2022-10-11 10:28:11 +08:00
cd2d748648 Added missing includes (#246) 2022-09-26 14:02:56 +08:00
05c2c97ea0 Merge branch 'develop' 2022-09-26 11:54:49 +08:00
6ee2b188ef [transform_view_ext] Unary transform_view is an Associative Sequence now 2022-09-26 11:41:12 +08:00
03500e4fd3 [transform_view_ext] Updated docs 2022-09-26 11:41:12 +08:00
3c82db82df Merge branch 'develop' 2022-09-26 11:40:31 +08:00
287ca90947 Merge branch 'develop' 2022-09-26 11:40:31 +08:00
a884709253 deref_data_impl.hpp: fix missing includes 2022-09-26 11:35:55 +08:00
8d8db27953 Fix Clang 13 -Wdeprecated-copy warnings
Clang 13 have new warning under the same group
2022-09-26 11:35:55 +08:00
72c5c094b9 [githubactions] Fixed reverse_view test for C++03 2022-09-26 11:35:55 +08:00
b13fc27cf2 Diff simplified && update copyrights 2022-09-26 11:35:55 +08:00
efe3d59c73 [identity_view] Fix for spoiled prvalue 2022-09-26 11:35:55 +08:00
622e048cf2 Update identity_view.cpp 2022-09-26 11:35:55 +08:00
2a9a44ee7c Update identity_view.cpp 2022-09-26 11:35:55 +08:00
aca00012d1 [identity_view] Added boost::fusion::identity_view 2022-09-26 11:35:55 +08:00
c4e7f2bb1a [transform_view_ext] Unary transform_view is an Associative Sequence now 2022-09-26 11:35:55 +08:00
3a98d9dbeb [transform_view_ext] Updated docs 2022-09-26 11:35:33 +08:00
116768f3b2 Update appveyor.yml 2022-09-26 11:34:26 +08:00
df37668501 Update appveyor.yml 2022-09-26 11:34:26 +08:00
2a70da0170 Update appveyor.yml 2022-09-26 11:34:26 +08:00
60408efa18 Update view.qbk 2022-09-26 11:34:26 +08:00
d49b59bdf9 Fixed all '*_data' methods in reverse_view 2022-09-26 11:34:26 +08:00
e15016adb6 Applied fixes for reverse_view 2022-09-26 11:34:26 +08:00
24138813d6 Update reverse_view.cpp 2022-09-26 11:34:26 +08:00
0c6c0b17e5 Update reverse_view.cpp 2022-09-26 11:34:26 +08:00
95b6ebdc61 Merge branch 'develop' 2022-09-26 11:34:26 +08:00
dd3bf8aa3e Merge branch 'develop' 2022-09-26 11:34:25 +08:00
3f6f947233 Revert "Added functional dependency to master" 2022-09-26 11:34:03 +08:00
6191e9763a Merge remote-tracking branch 'origin/master' 2022-09-26 10:55:17 +08:00
14c22945cc Merge branch 'develop' 2022-09-26 10:54:48 +08:00
a19d919f7b develop from master again (#260)
* Added functional dependency to master

* Revert "Added functional dependency to master"

* Merge branch 'develop'

* Merge branch 'develop'

* Update view.qbk

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* [transform_view_ext] Updated docs

* [transform_view_ext] Unary transform_view is an Associative Sequence now

* [identity_view] Added boost::fusion::identity_view

* Update identity_view.cpp

* Update identity_view.cpp

* [identity_view] Fix for spoiled prvalue

* Update reverse_view.cpp

* Update reverse_view.cpp

* Applied fixes for reverse_view

* Fixed all '*_data' methods in reverse_view

* Diff simplified && update copyrights

* [githubactions] Fixed CI

* Fix Clang 13 `-Wdeprecated-copy` warnings

Clang 13 have new warning under the same group

* [githubactions] Fixed reverse_view test for C++03

* deref_data_impl.hpp: fix missing includes

Co-authored-by: Denis Mikhailov <denismikhaylov38@gmail.com>
Co-authored-by: Nikita Kniazev <nok.raven@gmail.com>
2022-09-26 10:43:24 +08:00
9a65c81640 Merge branch 'develop' 2022-09-26 10:41:11 +08:00
1c858a5fdc Merge branch 'master' into develop 2022-09-26 10:38:15 +08:00
3c749cbf49 Merge branch 'develop' 2022-09-26 10:22:37 +08:00
4c4d2ad66c Merge branch 'master' into develop 2022-09-26 08:59:02 +08:00
63727a3f16 Merge pull request #257 from Kojoley/deprecated-copy-again
Fix Clang 13 `-Wdeprecated-copy` warnings
2022-09-26 08:56:30 +08:00
bbddc4f10a Merge pull request #245 from denzor200/githubactions
Extended CI && Fixed test for C++03
2022-09-26 08:56:30 +08:00
22be72a3c5 deref_data_impl.hpp: fix missing includes 2022-09-26 08:56:30 +08:00
9a2f490130 [githubactions] Fixed reverse_view test for C++03 2022-09-26 08:56:30 +08:00
90721d48e9 Fix Clang 13 -Wdeprecated-copy warnings
Clang 13 have new warning under the same group
2022-09-26 08:56:30 +08:00
427d46e7dc [githubactions] Fixed CI 2022-09-26 08:56:30 +08:00
195a0521eb Merge remote-tracking branch 'sdarwin/githubactions' into githubactions 2022-09-26 08:56:30 +08:00
d2f9a048f7 Merge pull request #237 from denzor200/denzor200-patch-3
Fixed reverse_view
2022-09-26 08:56:10 +08:00
1a9faa6744 Diff simplified && update copyrights 2022-09-26 08:56:10 +08:00
1a16250b06 Merge remote-tracking branch 'origin/develop' into denzor200-patch-3 2022-09-26 08:56:10 +08:00
cdf26a72e9 Fixed all '*_data' methods in reverse_view 2022-09-26 08:56:10 +08:00
2a295202f7 Applied fixes for reverse_view 2022-09-26 08:56:10 +08:00
afba308e47 Update reverse_view.cpp 2022-09-26 08:55:49 +08:00
662567cb9f Update reverse_view.cpp 2022-09-26 08:55:49 +08:00
d9c89fc17c Merge pull request #240 from denzor200/identity_view
Added boost::fusion::identity_view
2022-09-26 08:55:25 +08:00
c59c1790c3 [identity_view] Fix for spoiled prvalue 2022-09-26 08:55:25 +08:00
11abd9b156 Update identity_view.cpp 2022-09-26 08:55:25 +08:00
62b45086c0 Update identity_view.cpp 2022-09-26 08:55:25 +08:00
596056930a [identity_view] Added boost::fusion::identity_view 2022-09-26 08:55:25 +08:00
41aae2c684 Merge pull request #239 from denzor200/transform_view_ext
Transform view ext
2022-09-26 08:55:10 +08:00
41fe9ba9b5 Merge pull request #236 from denzor200/denzor200-patch-2
Fixed CI
2022-09-26 08:55:10 +08:00
2aed5b1ab5 Merge branch 'boostorg:develop' into transform_view_ext 2022-09-26 08:55:10 +08:00
360dd957f2 [transform_view_ext] Unary transform_view is an Associative Sequence now 2022-09-26 08:55:10 +08:00
cc865135c9 Merge remote-tracking branch 'origin/denzor200-patch-4' into transform_view_ext
Conflicts:
	doc/view.qbk
2022-09-26 08:54:52 +08:00
c16e4f046b [transform_view_ext] Updated docs 2022-09-26 08:54:31 +08:00
58e72e74a6 Merge pull request #238 from denzor200/denzor200-patch-4
Fixed typo in the doc && less tautology
2022-09-26 08:54:12 +08:00
638855c861 Update appveyor.yml 2022-09-26 08:54:12 +08:00
cf99c66176 Update appveyor.yml 2022-09-26 08:54:12 +08:00
516a7a7add Update appveyor.yml 2022-09-26 08:54:12 +08:00
41b38d4adc Update view.qbk 2022-09-26 08:53:59 +08:00
fa5f1b7741 Merge pull request #200 from Kojoley/simplify-vector-assign_sequence
vector: Simplify assign_sequence
2022-09-26 08:53:43 +08:00
d8e3cc29da Merge branch 'master' into develop 2022-09-26 08:38:53 +08:00
af411a959c Merge branch 'develop' 2022-09-26 08:38:01 +08:00
51629ef53a Merge branch 'master' into develop 2022-09-26 08:12:29 +08:00
e79a8690f0 Merge branch 'develop' 2022-09-26 08:11:49 +08:00
8f49ff2006 Merge pull request #257 from Kojoley/deprecated-copy-again
Fix Clang 13 `-Wdeprecated-copy` warnings
2022-09-10 06:22:02 +08:00
ba320bf395 deref_data_impl.hpp: fix missing includes 2022-09-09 21:32:01 +03:00
7fe4a887ae Fix Clang 13 -Wdeprecated-copy warnings
Clang 13 have new warning under the same group
2022-09-08 21:29:55 +03:00
6539567952 Merge pull request #255 from boostorg/revert-251-patch-2
Revert "Added functional dependency to master"
2022-07-15 09:58:22 +08:00
6b2a3b96ac Revert "Added functional dependency to master" 2022-07-15 09:56:21 +08:00
499c66537b Merge pull request #251 from denzor200/patch-2
Added functional dependency to master
2022-07-04 18:31:01 +08:00
37ed70fc43 Merge pull request #250 from denzor200/patch-1
Added functional dependency to develop
2022-07-04 18:30:41 +08:00
5d78322e16 Added functional dependency to master 2022-07-04 16:26:07 +06:00
283d1a62c4 Added functional dependency to develop 2022-07-04 16:25:03 +06:00
2dceadd1f0 Merge pull request #249 from fanquake/deprecated_headers
refactor: remove some usage of deprecated headers
2022-04-09 10:30:03 +08:00
6da4ec1ae5 refactor: use core/noncopyable over noncopyable
The later is deprecated:
```cpp

// The header file at this path is deprecated;
// use boost/core/noncopyable.hpp instead.

```
2022-04-08 15:02:43 +01:00
8e58e09ba7 refactor: use core/ref.hpp over ref.hpp
The later has been deprecated:
```cpp

// The header file at this path is deprecated;
// use boost/core/ref.hpp instead.

```
2022-04-08 15:00:20 +01:00
45054c239b Merge pull request #245 from denzor200/githubactions
Extended CI && Fixed test for C++03
2022-01-25 15:32:53 +08:00
145b54d060 [githubactions] Fixed reverse_view test for C++03 2022-01-24 23:40:18 +04:00
d77dc74c7f [githubactions] Fixed CI 2022-01-24 23:27:28 +04:00
b50f10d1dd Merge remote-tracking branch 'sdarwin/githubactions' into githubactions 2022-01-24 23:15:04 +04:00
23e78a5974 Merge pull request #237 from denzor200/denzor200-patch-3
Fixed reverse_view
2022-01-16 18:10:43 +08:00
d22982e3a9 Diff simplified && update copyrights 2022-01-16 09:49:52 +04:00
1c5d3ac6f6 Merge remote-tracking branch 'origin/develop' into denzor200-patch-3 2022-01-16 09:43:41 +04:00
13593be807 Merge pull request #240 from denzor200/identity_view
Added boost::fusion::identity_view
2022-01-16 08:39:38 +08:00
21a449ae46 [identity_view] Fix for spoiled prvalue 2022-01-15 22:22:46 +04:00
d26c2e4212 Update identity_view.cpp 2022-01-12 10:14:07 +04:00
b0f60d5933 Update identity_view.cpp 2022-01-12 09:48:26 +04:00
eed79cb557 [identity_view] Added boost::fusion::identity_view 2022-01-10 21:19:38 +04:00
438d4d1874 Merge pull request #239 from denzor200/transform_view_ext
Transform view ext
2022-01-10 20:57:45 +08:00
9c1105ca00 Merge pull request #236 from denzor200/denzor200-patch-2
Fixed CI
2022-01-10 20:54:20 +08:00
37f64aa622 Merge branch 'boostorg:develop' into transform_view_ext 2022-01-10 09:34:00 +04:00
9be3b29738 Merge pull request #238 from denzor200/denzor200-patch-4
Fixed typo in the doc && less tautology
2022-01-10 07:50:57 +08:00
a57683a68d [transform_view_ext] Unary transform_view is an Associative Sequence now 2022-01-09 16:34:07 +04:00
e3429dac26 Merge remote-tracking branch 'origin/denzor200-patch-4' into transform_view_ext
Conflicts:
	doc/view.qbk
2022-01-09 15:31:15 +04:00
aa5ea2af69 Update view.qbk 2022-01-09 07:45:54 +04:00
2bb8a26c5b Fixed all '*_data' methods in reverse_view 2021-11-08 02:11:31 +04:00
95cf8bdb8d Applied fixes for reverse_view 2021-11-07 23:07:18 +04:00
380a2bc7a0 Update reverse_view.cpp 2021-11-07 03:29:06 +04:00
f07cca743f Update reverse_view.cpp 2021-11-07 03:03:18 +04:00
5db3ed8134 [transform_view_ext] Updated docs 2021-11-06 20:33:38 +04:00
8ea7f31294 Update appveyor.yml 2021-11-05 15:39:10 +04:00
10f44ff5a0 Update appveyor.yml 2021-11-05 14:51:22 +04:00
12c5097cf7 Update appveyor.yml 2021-11-05 14:13:09 +04:00
ccdcdd5610 Merge pull request #235 from denzor200/denzor200-patch-1
Fixed typos in the doc
2021-10-31 21:26:29 +08:00
25f12dedc8 Update sequence.qbk 2021-10-31 13:32:28 +04:00
c199f5c6fa Update sequence.qbk 2021-10-31 13:22:35 +04:00
de61a00d62 Fix doc as per https://github.com/boostorg/fusion/issues/234 2021-09-26 09:00:54 +08:00
3e20342084 Merge pull request #200 from Kojoley/simplify-vector-assign_sequence
vector: Simplify assign_sequence
2021-09-04 14:16:30 +08:00
500e4c120f Update CMakeLists.txt 2021-06-10 01:00:55 +03:00
b0f80684fd Add GitHub Actions config [ci skip] 2021-03-02 14:54:00 +00:00
38060fab3a Merge pull request #228 from eldiener/develop
[skip ci] Add "cxxstd" json field
2021-01-20 08:12:50 +08:00
198458a9f2 [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-19 17:22:00 -05:00
4a699a39f5 Merge pull request #222 from k15tfu/fix-issue-221
Fix definition-of-implicit-copy-constructor-is-deprecated warnings
2020-10-06 09:20:17 +08:00
b93b4c9a86 Merge pull request #226 from giomasce-throwaway/develop
Fix missing name copyright headers.
2020-10-06 09:14:40 +08:00
5a9bfa3d7d Fix missing name copyright headers.
The name was reconstructed from the Git history.
2020-10-05 19:31:34 +02:00
c46e492d45 Merge pull request #223 from Kojoley/deprecated-copy
Fix -Wdeprecated-copy
2020-05-30 01:51:15 +08:00
4979945690 Fix -Wdeprecated-copy 2020-04-30 02:47:37 +03:00
9dca58bd33 Fix definition-of-implicit-copy-constructor-is-deprecated warnings
Fixes #221
2020-04-20 19:02:10 +03:00
c3af48d345 Merge pull request #220 from eldiener/develop
Changes for Embarcadero C++ clang-based compilers, targeting Boost 1.74. Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost conf…
2020-04-09 21:44:43 +08:00
70c38c7bf7 Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-31 08:30:37 -04:00
edddad2b4e Merge branch 'master' into develop 2020-03-26 19:13:17 +08:00
b3c212c47f Merge pull request #216 from Kojoley/fix-comparison-operators-enabler
Fix comparison operators enabler
2019-12-04 14:24:27 +08:00
4778c4c180 Fix comparison operators enabler
Overloads must not be presented until both arguments are Fusion sequences.
2019-12-04 03:04:34 +03:00
5f30a8da60 Merge pull request #212 from Romain-Geissler-1A/delete-private-copy-operators
Explicitly delete all non implemented assignment operators.
2019-11-19 09:40:12 +08:00
fc32335387 Merge pull request #215 from Kojoley/patch-1
CI: Fix Appveyor builds
2019-11-01 08:32:51 +08:00
b5751ae85d CI: Fix Appveyor builds 2019-10-31 22:12:43 +03:00
e5a007579f Merge pull request #214 from Jac1494/develop
Disabled two test which tries to return local address
2019-07-27 10:54:46 +08:00
3e07b3f66b Disabled two test which tries to return local address 2019-07-25 18:10:22 +05:30
08076be2ac Explicitly delete all non implemented assignment operators.
Commit (almost) automatically generated with the following sed command:
sed -i -ne '1h;1!H;${g;s|\n[[:blank:]]*private:\n\([[:blank:]]*\)// silence MSVC warning C4512: assignment operator could not be generated\n\([[:blank:]]*\)\([^\n]\+\);\n|\n\1// silence MSVC warning C4512: assignment operator could not be generated\n\2BOOST_DELETED_FUNCTION(\3)\n|g;p}' $(git ls-files)
2019-05-08 17:11:37 +00:00
4c51811315 Merge pull request #208 from Mike-Devel/min_cmake
[CMake] Add minimal cmake file
2019-03-08 08:55:47 +09:00
19d6c7ad3b Fix is_view_impl to return false for non fusion sequences (just like is_sequence_impl). (reverted from commit 1c693f05bf) 2019-02-18 13:59:58 +08:00
1c693f05bf Fix is_view_impl to return false for non fusion sequences (just like is_sequence_impl). 2019-02-18 12:45:36 +08:00
b180146e3d [CMake] Add disclaimer and turn tabs into spaces 2019-01-28 13:02:40 +01:00
68affa1706 [CMake] Generate cmake target that other libraries can use
... to express their dependency on this library and retrieve any
configuration information such as the include directory, binary
to link to (if any), transitive dependencies, necessary compiler
options or the required c++ standards level.
2019-01-23 19:03:03 +01:00
f0089a640e Merge pull request #205 from Kojoley/sequence-intrinsic-at
Tweak sequence intrinsic at
2019-01-16 18:03:12 +09:00
81a1c2c99a Merge pull request #207 from boostorg/develop
Update CI scripts on master
2019-01-10 17:19:50 +09:00
7b55860d78 Merge pull request #206 from boostorg/update-ci
Update CI scripts
2019-01-10 08:45:02 +09:00
70837a30c5 CI: Added clang-win runner 2019-01-09 18:59:05 +09:00
2e91d0b78e CI: Updated travis compiler matrix 2019-01-09 18:58:40 +09:00
e375a4541b CI: Updated for the recent boost-install changes 2019-01-09 18:33:23 +09:00
908a34a4ed Tweak sequence intrinsic at
A bit clearer and slightly less work for the inliner
2018-11-01 02:01:15 +03:00
62137c0ab7 Merge pull request #204 from boostorg/develop
boost 1.69
2018-10-31 08:23:10 +09:00
753db26073 Merge pull request #198 from Kojoley/vector-simplify-at_impl
vector: Simplify at_impl
2018-10-25 22:12:38 +09:00
309a2d623f Merge pull request #201 from Kojoley/a-slightly-cleaner-n3031-workaround
A slightly cleaner N3031 workaround
2018-10-18 08:17:24 +09:00
b5ba6cbd2b N3031 workaround for compilers without alias templates 2018-10-14 02:49:25 +03:00
2160949150 A slightly cleaner N3031 workaround 2018-10-12 00:34:20 +03:00
6208b083fb Merge pull request #199 from Kojoley/simplify-is_same_size
Simplify is_same_size
2018-10-10 22:34:30 +09:00
95beeba19c Merge pull request #197 from Kojoley/vector_n-test-fix-warning
TST: vector_n: Fixed conversion warning
2018-10-10 22:31:53 +09:00
efe9065b8c vector: Simplify at_impl 2018-10-10 04:19:10 +03:00
26e8b5e459 vector: Simplify assign_sequence 2018-10-10 03:09:54 +03:00
d1da8ee746 Simplify is_same_size 2018-10-07 23:17:40 +03:00
a26dcf59ce TST: vector_n: Fixed conversion warning
```
boost\fusion\container\vector\vector.hpp(168): warning C4244: 'initializing': conversion from 'T' to 'T', possible loss of data
1>        with
1>        [
1>            T=int
1>        ]
1>        and
1>        [
1>            T=float
1>        ]
```
2018-10-05 15:54:35 +03:00
6b5c5be9be Merge pull request #195 from Kojoley/patch-2
map_fwd: Do not include the implementation details
2018-09-27 09:35:05 +09:00
8c36079edb Merge pull request #193 from Kojoley/patch-1
Update decltype(expr)::type WA for Clang 3.0
2018-09-27 09:34:43 +09:00
9db262acf5 Fix unit tests that did not return report_errors() 2018-09-24 19:43:33 -04:00
a3abadb884 map_fwd: Do not include the implementation details 2018-09-25 02:21:05 +03:00
3cfbd9826d Fix unit tests that did not return report_errors() 2018-09-17 07:17:29 -04:00
c1fea895c2 Update decltype(expr)::type WA for Clang 3.0 2018-08-17 01:36:56 +03:00
6a3ddd1458 Merge pull request #191 from boostorg/adapt-adt/return-const
adapt/adt: Don't add/remove const on return type of attributes
2018-08-09 08:21:49 +09:00
b1f20628bb Merge pull request #192 from Kojoley/define-is_view-for-non-fusion
Define traits::is_view for non fusion types
2018-08-03 09:46:42 +09:00
b0f0882229 Define traits::is_view for non fusion types 2018-08-03 00:24:10 +03:00
b8fafe04d9 Merge pull request #190 from boostorg/cleanup/filter_view
Cleanup filter_view to improve performance
2018-08-02 12:53:08 +09:00
95b4500898 test: Suppress unused warning 2018-08-02 12:43:26 +09:00
b02cb70760 test: Suppress unused warning on MSVC 2018-08-02 09:37:32 +09:00
77ebd568e1 adapt/adt: Don't add/remove const on return type of attributes
Boost.TypeOf always deduces the type as un-cv-qualified value type, thus const-ized
value type is redundant and inhibiting compiler optimization.
2018-08-01 20:08:24 +09:00
e29b1a07f3 adapt: Cleanup includes 2018-07-28 14:49:50 +09:00
f03bb5ec2e test: Removed unnecessary semi-colon 2018-07-28 14:40:51 +09:00
cc0c684a92 test: Suppress unused warning 2018-07-27 12:45:33 +09:00
c740a4dbad Merge pull request #188 from boostorg/develop
Post beta merge
2018-07-17 21:12:08 +09:00
48f8af3e73 filter_view: Removed redundant filter operation
Iterator constructor always filters and determines right position.
2018-07-07 09:30:17 +09:00
cc3fbc4f5d Removed unused headers 2018-07-07 09:30:17 +09:00
bd96a6bcfb doc: Fixed filter_view parameter requirements 2018-07-07 09:24:55 +09:00
2a95fcc3e9 Merge pull request #186 from boostorg/bugfix/apply
Fixed unintentional MPL substitution in transform_view
2018-07-07 08:11:15 +09:00
47ff2e6cb5 find_if: Improved tag usage
The traversal tag is a bit complex than before.
2018-07-07 07:18:56 +09:00
9036c72a61 find_if: Removed unnecessary mpl::lambda
mpl::apply can treat placeholder expression
2018-07-07 07:08:17 +09:00
06a2f0560f doc: Fixed keyword links 2018-07-07 01:56:50 +09:00
c76cd3d6b2 test: Suppress unused warning 2018-07-07 01:27:20 +09:00
77959b1d33 test: Added test for ticket 5490 2018-07-07 01:23:11 +09:00
c6448b9e45 transform: Stopped use of mpl::apply
it causes unintended MPL substitution
2018-07-07 01:06:05 +09:00
561890429b doc: Moved paragraph to mpl adaptation to mpl section 2018-07-06 11:21:54 +09:00
23c54602c2 Merge pull request #185 from boostorg/docfix/io-for-adapted
doc: Added note regarding IO for adapted type
2018-07-05 22:57:56 +09:00
30c044b03a doc: Added note regarding IO for adapted type
[skip ci]
closes: track 6091
2018-07-05 22:15:33 +09:00
a71b9607e1 Merge pull request #184 from boostorg/develop
pre boost 1.68.0 beta merge
2018-07-03 21:50:36 +09:00
102588ae46 Merge pull request #183 from boostorg/mutable_for_each
Fixed for_each parameter type to accept mutable functor
2018-07-03 12:40:54 +09:00
0e4c5127f5 algo/for_each: Fixed parameter type
to be able to call mutable object
2018-07-02 22:19:25 +09:00
afb8b150a9 Merge pull request #181 from boostorg/init-and-paren
Fixed misused parenthesized initializer
2018-05-13 20:40:25 +09:00
d832387fdb Fixed misused parenthesized initializer 2018-05-13 18:59:43 +09:00
0c138de7cb Merge pull request #180 from boostorg/develop
Merge develop
2018-05-10 00:59:45 +09:00
98b96c3b97 Merge pull request #179 from boostorg/support
Reorganize support facility to simplify
2018-04-28 00:21:06 +09:00
68be23a0b9 Merge upstream branch 'develop' into support 2018-04-27 20:32:09 +09:00
6f8de8d774 Added workaround for fold expr and dependent name 2018-04-27 20:29:06 +09:00
5221bbbc76 Added workaround for defaulted and noexcept 2018-04-27 14:56:23 +09:00
0e900bba3f Specify defaulted and remove unnecessary functions from unused_type 2018-04-27 12:37:37 +09:00
38aa3705d0 Added test for unused_type 2018-04-27 12:37:00 +09:00
1854626651 Merge pull request #178 from boostorg/more-ci-targets
More ci targets
2018-04-26 06:41:55 +09:00
e8da43a539 Added workaround for gcc 4.6 with C array 2018-04-26 00:02:57 +09:00
3b8fb67b52 Update WA condition 2018-04-22 03:44:57 +09:00
c4881f1862 Merge upstream branch 'develop' into more-ci-targets 2018-04-22 03:41:55 +09:00
e818089a91 likewise 2018-04-21 19:18:09 +09:00
a95a838779 Added workaround to test
is_constructible on GCC < 4.7 always fail to test non unary ctor
2018-04-21 18:22:24 +09:00
7443cb1101 Changed availability condition to what Boost.TT providing 2018-04-20 13:04:02 +09:00
84b1847442 Merge pull request #177 from boostorg/bugfix/c-style-array
Fixed compile error with C-style array
2018-04-19 01:44:13 +09:00
a273cd8131 Added workaround for msvc-14.x 2018-04-19 00:21:41 +09:00
757541f9d2 Updated c-style array test for associative container 2018-04-18 22:39:55 +09:00
dd695c1dbd Fixed a compile error bug similar to previous vector's one 2018-04-18 22:38:09 +09:00
96b2e51828 Added test for #176 2018-04-18 22:33:36 +09:00
e962c1abb5 Fixed vector compile error with C-style array 2018-04-18 22:31:35 +09:00
7899658d8e Merge pull request #175 from boostorg/develop
Post beta merge
2018-03-25 12:58:00 +09:00
79262831ef Merge pull request #174 from boostorg/testfix/logical-and
Fixed detail::and test
2018-03-15 13:35:23 +09:00
03ac9086bc Merge pull request #172 from boostorg/develop
Pre 1.67.0 beta merge - agian
2018-03-06 15:09:50 +09:00
9de3272174 Added workaround for GCC 4.4/c++0x
Teh call of ctor is ambiguous since gcc 4.4 allows binding rvalue to lvalue reference.
2018-03-06 00:40:41 +09:00
25c6334c58 meta: Update failure toolset name 2018-03-03 16:20:08 +09:00
479bc3133b Merge pull request #169 from boostorg/develop
Pre 1.67.0 beta merge
2018-02-26 01:02:16 +09:00
eeeee9bfbb Fixed ambiguous call of hash_value
ADL also picks stdext::hash_value which msvc providing.
2018-02-19 22:40:56 +09:00
eb0cbbc347 CI: trusty doesn't provide gcc 4.5 2018-02-18 21:25:51 +09:00
d0c17119e7 CI: skip known to fail 2018-02-17 17:46:03 +09:00
28ea5dacce CI: Added more build target 2018-02-17 17:45:49 +09:00
6c96720080 CI: Remove build branch restriction 2018-02-17 17:27:20 +09:00
71ad390cf0 Merge pull request #162 from boostorg/develop
Post beta merge
2017-12-03 00:08:31 +09:00
e6b5879511 Merge pull request #157 from boostorg/develop
Merge develop to master
2017-10-31 09:40:44 +09:00
84d8afbb31 Merge pull request #147 from boostorg/develop
Develop to Master
2017-06-19 23:43:44 +09:00
715a7fb729 Merge pull request #141 from boostorg/develop
Boost 1.63.0 beta release
2016-11-01 17:03:05 +09:00
3b96c3b70b Add, and update, documentation build targets. 2016-10-10 11:39:49 -05:00
904d3c2c01 Merge pull request #131 from boostorg/develop
post 1.61.0 beta1
2016-04-02 12:44:16 +08:00
0263c75cd8 Merge pull request #125 from boostorg/develop
Release Candidate for 1.61.0.
2016-03-03 06:58:37 +08:00
53ba3de15a Merge pull request #119 from boostorg/develop
Post 1.60.0 Beta bugfixes.
2015-12-11 15:06:59 +08:00
d6c853f7ad Merge pull request #111 from boostorg/develop
1.60.0 beta
2015-10-28 07:42:24 +08:00
dc55e5e103 Merge pull request #98 from Flast/bugfix/issue-11517
Fix #11517 (for master)
2015-08-04 08:14:48 +08:00
1646a7252b Merge pull request #95 from Flast/preprocess
Regenerate preprocessed files.
2015-07-28 08:03:50 +08:00
dae9964b15 Merge pull request #93 from Flast/bugfix/issue-11140
Fix a issue with nested fusion::tuple.
2015-07-27 15:26:37 +08:00
175 changed files with 2574 additions and 671 deletions

471
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,471 @@
name: GitHub Actions CI
on:
pull_request:
push:
branches:
- master
- develop
- githubactions*
- feature/**
- fix/**
- pr/**
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- name: "TOOLSET=gcc-4.4 CXXSTD=98,0x Job 0"
buildtype: "boost"
packages: "g++-4.4"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-4.4"
cxxstd: "98,0x"
- name: "TOOLSET=gcc-4.6 CXXSTD=03,0x Job 1"
buildtype: "boost"
packages: "g++-4.6"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-4.6"
cxxstd: "03,0x"
- name: "TOOLSET=gcc-4.7 CXXSTD=03,11 Job 2"
buildtype: "boost"
packages: "g++-4.7"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-4.7"
cxxstd: "03,11"
- name: "TOOLSET=gcc-4.8 CXXSTD=03,11,1y Job 3"
buildtype: "boost"
packages: "g++-4.8"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-4.8"
cxxstd: "03,11,1y"
- name: "TOOLSET=gcc-4.9 CXXSTD=03,11,14 Job 4"
buildtype: "boost"
packages: "g++-4.9"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-4.9"
cxxstd: "03,11,14"
- name: "TOOLSET=gcc-5 CXXSTD=03,11,14,17 Job 5"
buildtype: "boost"
packages: "g++-5"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-5"
cxxstd: "03,11,14,17"
- name: "TOOLSET=gcc-6 CXXSTD=03,11,14,17 Job 6"
buildtype: "boost"
packages: "g++-6"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-6"
cxxstd: "03,11,14,17"
- name: "TOOLSET=gcc-7 CXXSTD=03,11,14,17 Job 7"
buildtype: "boost"
packages: "g++-7"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-7"
cxxstd: "03,11,14,17"
- name: "TOOLSET=gcc-8 CXXSTD=03,11,14,17,2a Job 8"
buildtype: "boost"
packages: "g++-8"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "gcc-8"
cxxstd: "03,11,14,17,2a"
- name: "TOOLSET=clang-3.5 CXXSTD=03,11,14,1z Job 9"
buildtype: "boost"
packages: "clang-3.5"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-3.5"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-3.6 CXXSTD=03,11,14,1z Job 10"
buildtype: "boost"
packages: "clang-3.6"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-3.6"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-3.7 CXXSTD=03,11,14,1z Job 11"
buildtype: "boost"
packages: "clang-3.7"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-3.7"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-3.8 CXXSTD=03,11,14,1z Job 12"
buildtype: "boost"
packages: "clang-3.8"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-3.8"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-3.9 CXXSTD=03,11,14,1z Job 13"
buildtype: "boost"
packages: "clang-3.9"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-3.9"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-4.0 CXXSTD=03,11,14,1z Job 14"
buildtype: "boost"
packages: "clang-4.0"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: ""
llvm_ver: ""
toolset: "clang-4.0"
cxxstd: "03,11,14"
- name: "TOOLSET=clang-5.0 CXXSTD=03,11,14,17,2a Job 15"
buildtype: "boost"
packages: "clang-5.0"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: "xenial"
llvm_ver: "5.0"
toolset: "clang-5.0"
cxxstd: "03,11,14,17,2a"
- name: "TOOLSET=clang-6.0 CXXSTD=03,11,14,17,2a Job 16"
buildtype: "boost"
packages: "clang-6.0"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: "xenial"
llvm_ver: "6.0"
toolset: "clang-6.0"
cxxstd: "03,11,14,17,2a"
- name: "TOOLSET=clang-7 CXXSTD=03,11,14,17,2a Job 17"
buildtype: "boost"
packages: "clang-7"
packages_to_remove: ""
os: "ubuntu-20.04"
container: "ubuntu:16.04"
cxx: "g++"
sources: ""
llvm_os: "xenial"
llvm_ver: "7"
toolset: "clang-7"
cxxstd: "03,11,14,17,2a"
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
steps:
- name: Check if running in container
if: matrix.container != ''
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV
- name: If running in container, upgrade packages
if: matrix.container != ''
run: |
apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python ruby cpio gcc-multilib g++-multilib pkgconf python3 ccache libpython-dev
sudo apt-add-repository ppa:git-core/ppa
sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git
python_version=$(python3 -c 'import sys; print("{0.major}.{0.minor}".format(sys.version_info))')
sudo wget https://bootstrap.pypa.io/pip/$python_version/get-pip.py
sudo python3 get-pip.py
sudo /usr/local/bin/pip install cmake
- uses: actions/checkout@v2
- name: linux
shell: bash
env:
CXX: ${{ matrix.cxx }}
SOURCES: ${{ matrix.sources }}
LLVM_OS: ${{ matrix.llvm_os }}
LLVM_VER: ${{ matrix.llvm_ver }}
PACKAGES: ${{ matrix.packages }}
PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }}
JOB_BUILDTYPE: ${{ matrix.buildtype }}
TOOLSET: ${{ matrix.toolset }}
CXXSTD: ${{ matrix.cxxstd }}
COMPILER: ${{ matrix.compiler }}
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_OS_NAME: "linux"
run: |
echo '==================================> SETUP'
echo '==================================> PACKAGES'
set -e
if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi
echo ">>>>> APT: REPO.."
for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done
if test -n "${LLVM_OS}" ; then
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
if test -n "${LLVM_VER}" ; then
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
else
# Snapshot (i.e. trunk) build of clang
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main"
fi
fi
echo ">>>>> APT: UPDATE.."
sudo -E apt-get -o Acquire::Retries=3 update
if test -n "${SOURCES}" ; then
echo ">>>>> APT: INSTALL SOURCES.."
for SOURCE in $SOURCES; do
sudo -E apt-add-repository ppa:$SOURCE
done
fi
echo ">>>>> APT: INSTALL ${PACKAGES}.."
sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES}
echo '==================================> INSTALL AND COMPILE'
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
export VCS_COMMIT_ID=$GITHUB_SHA
export GIT_COMMIT=$GITHUB_SHA
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
export USER=$(whoami)
export CC=${CC:-gcc}
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone --depth 1 -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule init libs/array
git submodule init libs/assert
git submodule init libs/bind
git submodule init libs/concept_check
git submodule init libs/config
git submodule init libs/container_hash
git submodule init libs/conversion
git submodule init libs/core
git submodule init libs/detail
git submodule init libs/function
git submodule init libs/function_types
git submodule init libs/functional
git submodule init libs/integer
git submodule init libs/iterator
git submodule init libs/lambda
git submodule init libs/move
git submodule init libs/mpl
git submodule init libs/optional
git submodule init libs/predef
git submodule init libs/preprocessor
git submodule init libs/smart_ptr
git submodule init libs/static_assert
git submodule init libs/throw_exception
git submodule init libs/tuple
git submodule init libs/type_index
git submodule init libs/type_traits
git submodule init libs/typeof
git submodule init libs/utility
git submodule init libs/describe
git submodule init libs/mp11
git submodule init libs/headers tools/boost_install tools/build
git submodule update
rm -rf libs/fusion
cp -rp $TRAVIS_BUILD_DIR libs/fusion
ln -s $(pwd)/libs/fusion $TRAVIS_BUILD_DIR
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
fi
osx:
strategy:
fail-fast: false
matrix:
include:
- name: "TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,1 Job 18"
buildtype: "boost"
packages: ""
os: "macos-10.15"
cxx: "clang++"
sources: ""
llvm_os: ""
llvm_ver: ""
xcode_version: 11.7
toolset: "clang"
compiler: "clang++"
cxxstd: "03,11,14,1z"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Set DEVELOPER_DIR
if: matrix.xcode_version != ''
run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV
- name: Test DEVELOPER_DIR
run: echo $DEVELOPER_DIR
- name: "osx"
shell: bash
env:
CXX: ${{ matrix.cxx }}
SOURCES: ${{ matrix.sources }}
LLVM_OS: ${{ matrix.llvm_os }}
LLVM_VER: ${{ matrix.llvm_ver }}
PACKAGES: ${{ matrix.packages }}
JOB_BUILDTYPE: ${{ matrix.buildtype }}
TOOLSET: ${{ matrix.toolset }}
CXXSTD: ${{ matrix.cxxstd }}
COMPILER: ${{ matrix.compiler }}
TRAVIS_BRANCH: ${{ github.base_ref }}
TRAVIS_OS_NAME: "osx"
run: |
echo '==================================> SETUP'
set -e
sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck
echo '==================================> PACKAGES'
echo '==================================> INSTALL AND COMPILE'
set -e
export TRAVIS_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
export VCS_COMMIT_ID=$GITHUB_SHA
export GIT_COMMIT=$GITHUB_SHA
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
export USER=$(whoami)
export CC=${CC:-gcc}
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone --depth 1 -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule init libs/array
git submodule init libs/assert
git submodule init libs/bind
git submodule init libs/concept_check
git submodule init libs/config
git submodule init libs/container_hash
git submodule init libs/conversion
git submodule init libs/core
git submodule init libs/detail
git submodule init libs/function
git submodule init libs/function_types
git submodule init libs/functional
git submodule init libs/integer
git submodule init libs/iterator
git submodule init libs/lambda
git submodule init libs/move
git submodule init libs/mpl
git submodule init libs/optional
git submodule init libs/predef
git submodule init libs/preprocessor
git submodule init libs/smart_ptr
git submodule init libs/static_assert
git submodule init libs/throw_exception
git submodule init libs/tuple
git submodule init libs/type_index
git submodule init libs/type_traits
git submodule init libs/typeof
git submodule init libs/utility
git submodule init libs/describe
git submodule init libs/mp11
git submodule init libs/headers tools/boost_install tools/build
git submodule update
rm -rf libs/fusion
cp -rp $TRAVIS_BUILD_DIR libs/fusion
ln -s $(pwd)/libs/fusion $TRAVIS_BUILD_DIR
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
fi

View File

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

29
CMakeLists.txt Normal file
View File

@ -0,0 +1,29 @@
# Copyright 2018 Mike Dev
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
cmake_minimum_required(VERSION 3.5...3.20)
project(boost_fusion VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_fusion INTERFACE)
add_library(Boost::fusion ALIAS boost_fusion)
target_include_directories(boost_fusion INTERFACE include)
target_link_libraries(boost_fusion
INTERFACE
Boost::config
Boost::container_hash
Boost::core
Boost::function_types
Boost::mpl
Boost::preprocessor
Boost::static_assert
Boost::tuple
Boost::type_traits
Boost::typeof
Boost::utility
Boost::functional
Boost::describe
Boost::mp11
)

View File

@ -7,25 +7,45 @@ version: 1.0.{build}-{branch}
shallow_clone: true
branches:
only:
- master
- develop
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-9.0
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
ADDRMD: 32
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-10.0
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
ADDRMD: 32
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-11.0
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
ADDRMD: 32
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-12.0
ADDRMD: 32
CXXSTD: latest # fake
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-14.0
CXXSTD: 14
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-14.0
CXXSTD: latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc-14.1
CXXSTD: 14
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc-14.1
CXXSTD: 17
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc-14.1
CXXSTD: latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: clang-win
CXXSTD: 14
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: clang-win
CXXSTD: 17
install:
- set BOOST_BRANCH=develop
@ -62,8 +82,10 @@ install:
- git submodule init libs/type_traits
- git submodule init libs/typeof
- git submodule init libs/utility
- git submodule init libs/describe
- git submodule init libs/mp11
- git submodule init tools/build
- git submodule init libs/headers tools/boost_install tools/build
- git submodule update
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\fusion
- cmd /c bootstrap
@ -72,4 +94,5 @@ install:
build: off
test_script:
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET%
- if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET% cxxstd=%CXXSTD% %ADDRMD%

View File

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

View File

@ -1016,8 +1016,8 @@ __note_ref_wrappers__, __fusion_pair__
[section Tiers]
Tiers are sequences, where all elements are non-const reference types. They
are constructed with a call to a couple of /tie/ function templates. The
Tiers are sequences, where all elements are reference types. They are
constructed with a call to a couple of /tie/ function templates. The
succeeding sections document the various /tier/ flavors.
* __list_tie__
@ -2005,7 +2005,7 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
as_map(__make_vector__(
__fusion_make_pair__<int>('X')
, __fusion_make_pair__<double>("Men")))
// from associative sequence
namespace ns
{
@ -2222,7 +2222,7 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
result_of::as_map<__vector__<
__fusion_pair__<int, char>
, __fusion_pair__<double, std::string> > >::type
// from associative sequence
namespace ns
{

View File

@ -130,6 +130,7 @@
[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 __identity_view__ [link fusion.view.identity_view `identity_view`]]
[def __array__ [link fusion.adapted.array array]]
[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]]

View File

@ -163,6 +163,7 @@
<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/identity_view.html">identity_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>
<dt><span class="section"><a href="fusion/view/flatten_view.html">flatten_view</a></span></dt>

View File

@ -254,6 +254,7 @@ expressions must be valid:
* __iterator_range__ iterator (where adapted iterators are __associative_iterator__\ s)
* __joint_view__ iterator (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
* __reverse_view__ iterator (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
* __transform_view__ iterator (where adapted sequence is an __associative_sequence__ and a __forward_sequence__)
[endsect]

View File

@ -60,6 +60,7 @@ link against.
* single_view
* transform_view
* zip_view
* identity_view
* container
* deque
* list

View File

@ -166,7 +166,7 @@ Bidirectional Sequence the following must be met:
[[`__back__(s)`] [Any type] [] [Constant]]
[[`__back__(s) = o`] [Any type] [`s` is mutable and
`e = o`, where `e`
is the first element
is the last element
in the sequence, is
a valid expression.] [Constant]]
]
@ -237,14 +237,14 @@ any Random Access Sequence the following must be met:
[[`__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
is the N-th element from the beginning
of the sequence, is
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
is the M-th element from the beginning
of the sequence, is
a valid expression.] [Constant]]
]
@ -321,8 +321,7 @@ For any Associative Sequence the following expressions must be valid:
[[`__at_key__<K>(s)`] [Any type] [] [Constant]]
[[`__at_key__<K>(s) = o`] [Any type] [`s` is mutable and
`e = o`, where `e`
is the first element
in the sequence, is
is the element associated with K, is
a valid expression.] [Constant]]
]
@ -361,6 +360,7 @@ you can use `__result_of_value_at_key__<S, K>`.]
* __iterator_range__ (where adapted iterators are __associative_iterator__\ s)
* __joint_view__ (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
* __reverse_view__ (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
* __transform_view__ (where adapted sequence is an __associative_sequence__ and a __forward_sequence__)
[endsect]
@ -714,11 +714,11 @@ Returns the M-th element from the beginning of the sequence.
[heading Synopsis]
template <typename M, typename Sequence>
typename __result_of_at__<Sequence, N>::type
typename __result_of_at__<Sequence, M>::type
at(Sequence& seq);
template <typename M, typename Sequence>
typename __result_of_at__<Sequence const, N>::type
typename __result_of_at__<Sequence const, M>::type
at(Sequence const& seq);
[heading Parameters]
@ -1522,6 +1522,16 @@ each element. Analogously, the global `operator>>` has been overloaded
to extract __sequence__(s) from generic input streams by recursively
calling `operator>>` for each element.
Please note that, to display your adapted types via fusion IO system,
corresponding overloaded operators should be introduced to same namespace
of the type.
namespace your_awesome_library
{
using boost::fusion::operators::operator>>; // for input
using boost::fusion::operators::operator<<; // for output
...
The default delimiter between the elements is space, and the __sequence__
is enclosed in parenthesis. For Example:

View File

@ -1,6 +1,7 @@
[/==============================================================================
Copyright (C) 2001-2011 Joel de Guzman
Copyright (C) 2006 Dan Marsden
Copyright (c) 2022 Denis Mikhailov
Use, modification and distribution is subject to the Boost Software
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@ -93,10 +94,9 @@ presents only those elements for which its predicate evaluates to
[heading Template parameters]
[table
[[Parameter] [Description] [Default]]
[[`Sequence`] [A __forward_sequence__] []]
[[`Pred`] [Unary Metafunction
returning an `mpl::bool_`] []]
[[Parameter] [Description] [Default]]
[[`Sequence`] [A __forward_sequence__] []]
[[`Pred`] [A unary __mpl_lambda_expression__] []]
]
[heading Model of]
@ -271,7 +271,7 @@ defined in the implemented models.
[heading Description]
`zip_view` presents a view which iterates over a collection of __sequence__(s) in parallel. A `zip_view`
is constructed from a __sequence__ of references to the component __sequence__s.
is constructed from a __sequence__ of references to the component `__sequence__`s.
[heading Header]
@ -287,7 +287,7 @@ is constructed from a __sequence__ of references to the component __sequence__s.
[table
[[Parameter] [Description] [Default]]
[[`Sequences`] [A __forward_sequence__ of references to other Fusion __sequence__s] []]
[[`Sequences`] [A __forward_sequence__ of references to other Fusion `__sequence__`s] []]
]
[heading Model of]
@ -309,7 +309,7 @@ defined in __forward_sequence__.
[table
[[Expression] [Semantics]]
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component __sequence__s.]]
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component `__sequence__`s.]]
[[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]]
[[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]]
]
@ -329,9 +329,7 @@ defined in __forward_sequence__.
The unary version of `transform_view` presents a view of its underlying
sequence given a unary function object or function pointer. The binary
version of `transform_view` presents a view of 2 underlying sequences,
given a binary function object or function pointer. The `transform_view`
inherits the traversal characteristics (see __traversal_concept__) of
its underlying sequence or sequences.
given a binary function object or function pointer.
[heading Header]
@ -365,7 +363,8 @@ its underlying sequence or sequences.
* __forward_sequence__, __bidirectional_sequence__ or
__random_access_sequence__ depending on the traversal characteristics (see
__traversal_concept__) of its underlying sequence.
__traversal_concept__) of its underlying sequence or sequences.
* __associative_sequence__ if underlying sequence implements the __associative_sequence__ model(available only with unary version of `transform_view`).
[variablelist Notation
[[`TV`] [A `transform_view` type]]
@ -382,9 +381,7 @@ __traversal_concept__) of its underlying sequence.
[heading Expression Semantics]
Semantics of an expression is defined only where it differs from, or is not
defined in __forward_sequence__, __bidirectional_sequence__ or
__random_access_sequence__ depending on the traversal characteristics (see
__traversal_concept__) of its underlying sequence or sequences.
defined in the implemented models.
[table
[[Expression] [Semantics]]
@ -668,4 +665,60 @@ defined in __forward_sequence__.
[endsect]
[section identity_view]
[heading Description]
`identity_view` presents underlying sequence unchanged.
[heading Header]
#include <boost/fusion/view/identity_view.hpp>
#include <boost/fusion/include/identity_view.hpp>
[heading Synopsis]
template <typename Sequence>
struct identity_view;
[heading Template parameters]
[table
[[Parameter] [Description] [Default]]
[[`Sequence`] [A __forward_sequence__] []]
]
[heading Model of]
* A model of __forward_sequence__ if `Sequence` is a __forward_sequence__ else, __bidirectional_sequence__ if `Sequence` is a __bidirectional_sequence__
else, __random_access_sequence__ if `Sequence` is a __random_access_sequence__.
* __associative_sequence__ if `Sequence` implements the __associative_sequence__ model.
[variablelist Notation
[[`IV`] [An `identity_view` type]]
[[`s`] [An instance of `Sequence`]]
[[`iv`, `iv2`] [Instances of `identity_view`]]
]
[heading Expression Semantics]
Semantics of an expression is defined only where it differs from, or is not
defined in the implemented models.
[table
[[Expression] [Semantics]]
[[`IV(s)`] [Creates an `identity_view` given sequence, `s`.]]
[[`IV(iv)`] [Copy constructs an `identity_view` from another `identity_view`, `iv`.]]
[[`iv = iv2`] [Assigns to an `identity_view`, `iv`, from another `identity_view`, `iv2`.]]
]
[heading Example]
typedef __vector__<int, short, double> vector_type;
vector_type vec(2, 5, 3.3);
__identity_view__<vector_type> identity(vec);
std::cout << identity << std::endl; // (2 5 3.3)
[endsect]
[endsect]

View File

@ -46,7 +46,7 @@
#include <boost/mpl/max.hpp>
#include <boost/mpl/next.hpp>
#include <boost/ref.hpp>
#include <boost/core/ref.hpp>
#include <iostream>
#include <typeinfo>

View File

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

View File

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

View File

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

View File

@ -18,6 +18,11 @@
#include <boost/type_traits/is_const.hpp>
#include <boost/fusion/iterator/iterator_facade.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct random_access_traversal_tag;
@ -102,13 +107,13 @@ namespace boost { namespace fusion
return type();
}
};
private:
array_iterator<Array, Pos>& operator=(array_iterator<Array, Pos> const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -45,6 +45,10 @@ namespace boost { namespace fusion
template <typename Cons>
struct boost_tuple_iterator_identity;
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
template <typename Cons = tuples::null_type>
struct boost_tuple_iterator
: iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag>
@ -143,11 +147,10 @@ namespace boost { namespace fusion
struct equal_to
: is_same<typename I1::identity, typename I2::identity>
{};
private:
// silence MSVC warning C4512: assignment operator could not be generated
boost_tuple_iterator& operator= (boost_tuple_iterator const&);
};
#ifdef _MSC_VER
# pragma warning(pop)
#endif
template <typename Null>
struct boost_tuple_null_iterator

View File

@ -19,6 +19,11 @@
#include <boost/fusion/iterator/iterator_facade.hpp>
#include <boost/fusion/adapted/std_array/detail/array_size.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct random_access_traversal_tag;
@ -99,11 +104,11 @@ namespace boost { namespace fusion
return type();
}
};
private:
std_array_iterator<Array, Pos>& operator=(std_array_iterator<Array, Pos> const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -17,6 +17,11 @@
#include <tuple>
#include <utility>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct random_access_traversal_tag;
@ -107,6 +112,10 @@ namespace boost { namespace fusion
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

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

View File

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

View File

@ -34,7 +34,9 @@
#include <boost/mpl/tag.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/typeof/typeof.hpp>
@ -141,7 +143,7 @@
I, \
ATTRIBUTE)
#ifdef BOOST_MSVC
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1935)
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM(R,_,ELEM) \
typedef ELEM ELEM;
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL(SEQ) \

View File

@ -326,6 +326,9 @@
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
\
BOOST_FUSION_PUSH_WARNINGS \
BOOST_FUSION_DISABLE_MSVC_WARNING(4512) \
\
template <typename boost_fusion_detail_Seq, int N> \
struct BOOST_FUSION_ITERATOR_NAME(NAME) \
: boost::fusion::iterator_facade< \
@ -418,7 +421,10 @@
return type(it.seq_); \
} \
}; \
};
}; \
\
BOOST_FUSION_POP_WARNINGS \
/**/
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \

View File

@ -19,6 +19,9 @@
\
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
\
BOOST_FUSION_PUSH_WARNINGS \
BOOST_FUSION_DISABLE_MSVC_WARNING(4512) \
\
struct NAME \
{ \
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
@ -27,11 +30,10 @@
{} \
\
WRAPPED_TYPE& obj; \
\
private: \
NAME& operator= (NAME const&); \
}; \
\
BOOST_FUSION_POP_WARNINGS \
\
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
#define BOOST_FUSION_ADAPT_STRUCT_DEFINE_PROXY_TYPE( \

View File

@ -30,7 +30,7 @@ namespace detail
template <typename First, typename Last, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_linear(First const& first, Last const& last, F const& f, mpl::false_)
for_each_linear(First const& first, Last const& last, F& f, mpl::false_)
{
f(*first);
detail::for_each_linear(fusion::next(first), last, f,
@ -41,7 +41,7 @@ namespace detail
template <typename Sequence, typename F, typename Tag>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_dispatch(Sequence& seq, F const& f, Tag)
for_each_dispatch(Sequence& seq, F& f, Tag)
{
detail::for_each_linear(
fusion::begin(seq)
@ -57,7 +57,7 @@ namespace detail
{
template<typename I0, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
static void call(I0 const& i0, F& f)
{
f(*i0);
typedef typename result_of::next<I0>::type I1;
@ -78,7 +78,7 @@ namespace detail
{
template<typename I0, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
static void call(I0 const& i0, F& f)
{
f(*i0);
typedef typename result_of::next<I0>::type I1;
@ -95,7 +95,7 @@ namespace detail
{
template<typename I0, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
static void call(I0 const& i0, F& f)
{
f(*i0);
typedef typename result_of::next<I0>::type I1;
@ -109,7 +109,7 @@ namespace detail
{
template<typename I0, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static void call(I0 const& i0, F const& f)
static void call(I0 const& i0, F& f)
{
f(*i0);
}
@ -128,7 +128,7 @@ namespace detail
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each_dispatch(Sequence& seq, F const& f, random_access_traversal_tag)
for_each_dispatch(Sequence& seq, F& f, random_access_traversal_tag)
{
typedef typename result_of::begin<Sequence>::type begin;
typedef typename result_of::end<Sequence>::type end;
@ -138,7 +138,7 @@ namespace detail
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each(Sequence& seq, F const& f, mpl::false_) // unsegmented implementation
for_each(Sequence& seq, F& f, mpl::false_) // unsegmented implementation
{
detail::for_each_dispatch(seq, f, typename traits::category_of<Sequence>::type());
}

View File

@ -14,6 +14,10 @@
namespace boost { namespace fusion { namespace detail
{
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
template <typename Fun>
struct segmented_fold_fun
{
@ -37,6 +41,9 @@ namespace boost { namespace fusion { namespace detail
}
};
};
#ifdef _MSC_VER
# pragma warning(pop)
#endif
// The default implementation of this lives in detail/fold.hpp
template <typename Sequence, typename State, typename Fun, bool IsSequence, bool IsSegmented>

View File

@ -13,17 +13,22 @@
#include <boost/fusion/algorithm/iteration/for_each_fwd.hpp>
#include <boost/fusion/support/segmented_fold_until.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion { namespace detail
{
template <typename Fun>
struct segmented_for_each_fun
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
explicit segmented_for_each_fun(Fun const& f)
explicit segmented_for_each_fun(Fun& f)
: fun(f)
{}
Fun const& fun;
Fun& fun;
template <typename Sequence, typename State, typename Context>
struct apply
@ -43,10 +48,14 @@ namespace boost { namespace fusion { namespace detail
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline void
for_each(Sequence& seq, F const& f, mpl::true_) // segmented implementation
for_each(Sequence& seq, F& f, mpl::true_) // segmented implementation
{
fusion::segmented_fold_until(seq, void_(), segmented_for_each_fun<F>(f));
}
}}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -1,6 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2007 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -13,7 +14,7 @@
#include <boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp>
#include <boost/fusion/support/is_segmented.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/core/enable_if.hpp>
namespace boost { namespace fusion
{
@ -28,24 +29,16 @@ namespace boost { namespace fusion
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
>::type
for_each(Sequence& seq, F const& f)
inline typename enable_if<traits::is_sequence<Sequence> >::type
for_each(Sequence& seq, F f)
{
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
}
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
>::type
for_each(Sequence const& seq, F const& f)
inline typename enable_if<traits::is_sequence<Sequence> >::type
for_each(Sequence const& seq, F f)
{
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
}

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2011 Eric Niebler
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -9,7 +10,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/core/enable_if.hpp>
namespace boost { namespace fusion
{
@ -21,21 +22,13 @@ namespace boost { namespace fusion
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
>::type
for_each(Sequence& seq, F const& f);
inline typename enable_if<traits::is_sequence<Sequence> >::type
for_each(Sequence& seq, F f);
template <typename Sequence, typename F>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename
enable_if<
traits::is_sequence<Sequence>
, void
>::type
for_each(Sequence const& seq, F const& f);
inline typename enable_if<traits::is_sequence<Sequence> >::type
for_each(Sequence const& seq, F f);
}}
#endif

View File

@ -1,6 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007
Copyright (c) 2007 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

View File

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

View File

@ -18,6 +18,11 @@
#include <boost/mpl/int.hpp>
#include <boost/mpl/if.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
template <typename Iterator_, bool IsLast>
@ -168,5 +173,9 @@ namespace boost { namespace fusion
}
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

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

View File

@ -20,6 +20,11 @@
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion {
struct bidirectional_traversal_tag;
@ -110,14 +115,14 @@ namespace boost { namespace fusion {
{};
Seq& seq_;
private:
// silence MSVC warning C4512: assignment operator could not be generated
deque_iterator& operator= (deque_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -13,6 +13,11 @@
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/next.hpp>
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && BOOST_WORKAROUND(BOOST_GCC, / 100 == 404)
#include <boost/core/enable_if.hpp>
#include <boost/type_traits/is_same.hpp>
#endif
namespace boost { namespace fusion
{
struct fusion_sequence_tag;
@ -114,8 +119,13 @@ namespace boost { namespace fusion { namespace detail
{}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 404)
template <typename Value_, typename = typename enable_if<is_same<Value_, Value> >::type>
#else
typedef Value Value_;
#endif
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
keyed_element(Value&& value, Rest&& rest)
keyed_element(Value_&& value, Rest&& rest)
: Rest(std::move(rest))
, value_(BOOST_FUSION_FWD_ELEM(Value, value))
{}

View File

@ -70,6 +70,10 @@ namespace boost { namespace fusion
cons(cons<Car2, Cdr2> const& rhs)
: car(rhs.car), cdr(rhs.cdr) {}
#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS)
// Workaround for `array used as initializer` compile error on gcc 4.6 w/ c++0x.
template <typename = void>
#endif
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
cons(cons const& rhs)
: car(rhs.car), cdr(rhs.cdr) {}

View File

@ -26,6 +26,10 @@ namespace boost { namespace fusion
template <typename Cons>
struct cons_iterator_identity;
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
template <typename Cons = nil_>
struct cons_iterator : iterator_base<cons_iterator<Cons> >
{
@ -41,11 +45,10 @@ namespace boost { namespace fusion
: cons(in_cons) {}
cons_type& cons;
private:
// silence MSVC warning C4512: assignment operator could not be generated
cons_iterator& operator= (cons_iterator const&);
};
#ifdef _MSC_VER
# pragma warning(pop)
#endif
struct nil_iterator : iterator_base<nil_iterator>
{

View File

@ -125,11 +125,7 @@ namespace boost { namespace fusion { namespace detail
}
BOOST_FUSION_GPU_ENABLED
value_type get_val(mpl::identity<key_type>);
BOOST_FUSION_GPU_ENABLED
pair_type get_val(mpl::int_<index>);
BOOST_FUSION_GPU_ENABLED
value_type get_val(mpl::identity<key_type>) const;
mpl::identity<value_type> get_val(mpl::identity<key_type>) const;
BOOST_FUSION_GPU_ENABLED
pair_type get_val(mpl::int_<index>) const;

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2013 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -8,10 +9,6 @@
#define BOOST_FUSION_MAP_DETAIL_VALUE_AT_KEY_IMPL_02042013_0821
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/identity.hpp>
#include <boost/utility/declval.hpp>
namespace boost { namespace fusion
@ -27,12 +24,10 @@ namespace boost { namespace fusion
struct value_at_key_impl<map_tag>
{
template <typename Sequence, typename Key>
struct apply
{
typedef
decltype(boost::declval<Sequence>().get_val(mpl::identity<Key>()))
type;
};
struct apply : BOOST_FUSION_DECLTYPE_N3031((
boost::declval<Sequence>().get_val(mpl::identity<Key>())
))
{};
};
}
}}

View File

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

View File

@ -17,6 +17,11 @@
#include <boost/type_traits/is_const.hpp>
#include <boost/type_traits/add_const.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct random_access_traversal_tag;
@ -155,14 +160,13 @@ namespace boost { namespace fusion
{};
Seq& seq_;
private:
// silence MSVC warning C4512: assignment operator could not be generated
map_iterator& operator= (map_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -1,5 +1,5 @@
/*=============================================================================
Copyright (c) 2014 Kohei Takahashi
Copyright (c) 2014,2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -7,7 +7,6 @@
#ifndef FUSION_VALUE_AT_IMPL_16122014_1641
#define FUSION_VALUE_AT_IMPL_16122014_1641
#include <boost/config.hpp>
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/container/vector/detail/config.hpp>
@ -23,6 +22,7 @@
///////////////////////////////////////////////////////////////////////////////
#include <boost/fusion/container/vector/vector_fwd.hpp>
#include <boost/type_traits/declval.hpp>
#include <boost/mpl/identity.hpp>
namespace boost { namespace fusion
{
@ -35,7 +35,7 @@ namespace boost { namespace fusion
template <std::size_t N, typename U>
static inline BOOST_FUSION_GPU_ENABLED
U value_at_impl(store<N, U> const volatile*);
mpl::identity<U> value_at_impl(store<N, U> const volatile*);
}
namespace extension
@ -47,12 +47,10 @@ namespace boost { namespace fusion
struct value_at_impl<vector_tag>
{
template <typename Sequence, typename N>
struct apply
{
typedef
decltype(vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>()))
type;
};
struct apply : BOOST_FUSION_DECLTYPE_N3031((
vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())
))
{};
};
}
}}

View File

@ -168,9 +168,15 @@ namespace boost { namespace fusion
: elem(std::forward<U>(rhs))
{}
using elem_type = T;
T elem;
};
// placed outside of vector_data due to GCC < 6 bug
template <std::size_t J, typename U>
static inline BOOST_FUSION_GPU_ENABLED
store<J, U> store_at_impl(store<J, U>*);
template <typename I, typename ...T>
struct vector_data;
@ -214,49 +220,31 @@ namespace boost { namespace fusion
void
assign_sequence(Sequence&& seq)
{
assign(std::forward<Sequence>(seq), detail::index_sequence<I...>());
#ifndef BOOST_NO_CXX17_FOLD_EXPRESSIONS
(void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), ...);
#else
int nofold[] = { (void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), 0)..., 0 };
(void)nofold;
#endif
}
template <typename Sequence>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
void
assign(Sequence&&, detail::index_sequence<>) {}
template <typename Sequence, std::size_t N, std::size_t ...M>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
void
assign(Sequence&& seq, detail::index_sequence<N, M...>)
{
at_impl(mpl::int_<N>()) = vector_detail::forward_at_c<N>(seq);
assign(std::forward<Sequence>(seq), detail::index_sequence<M...>());
}
template <std::size_t N, typename U>
static BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
U& at_detail(store<N, U>* this_)
{
return this_->elem;
}
template <std::size_t N, typename U>
static BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
U const& at_detail(store<N, U> const* this_)
{
return this_->elem;
}
private:
template <std::size_t J>
using store_at = decltype(store_at_impl<J>(static_cast<vector_data*>(nullptr)));
public:
template <typename J>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
auto at_impl(J) -> decltype(at_detail<J::value>(&std::declval<vector_data&>()))
typename store_at<J::value>::elem_type& at_impl(J)
{
return at_detail<J::value>(this);
return store_at<J::value>::elem;
}
template <typename J>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
auto at_impl(J) const -> decltype(at_detail<J::value>(&std::declval<vector_data const&>()))
typename store_at<J::value>::elem_type const& at_impl(J) const
{
return at_detail<J::value>(this);
return store_at<J::value>::elem;
}
};
} // namespace boost::fusion::vector_detail

View File

@ -19,6 +19,11 @@
#include <boost/type_traits/add_const.hpp>
#include <boost/mpl/int.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct vector_iterator_tag;
@ -42,13 +47,13 @@ namespace boost { namespace fusion
: vec(in_vec) {}
Vector& vec;
private:
// silence MSVC warning C4512: assignment operator could not be generated
vector_iterator& operator= (vector_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

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

View File

@ -6,7 +6,7 @@
==============================================================================*/
#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP
#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADR_HPP
#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>

View File

@ -0,0 +1,12 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !defined(FUSION_INCLUDE_IDENTITY_VIEW)
#define FUSION_INCLUDE_IDENTITY_VIEW
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/view/identity_view.hpp>
#endif

View File

@ -13,6 +13,11 @@
#include <boost/fusion/support/tag_of.hpp>
#include <boost/fusion/sequence/intrinsic_fwd.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion { namespace detail
{
struct segment_sequence_tag {};
@ -36,6 +41,10 @@ namespace boost { namespace fusion { namespace detail
};
}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
namespace extension
{
template<typename Tag>

View File

@ -19,6 +19,11 @@
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/type_traits/remove_const.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
template <typename Derived_, typename Iterator_,
@ -135,6 +140,10 @@ namespace boost { namespace fusion
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

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

View File

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

View File

@ -10,7 +10,6 @@
#define FUSION_IN_05052005_0121
#include <boost/fusion/support/config.hpp>
#include <istream>
#include <boost/fusion/sequence/io/detail/manip.hpp>
#include <boost/mpl/bool.hpp>

View File

@ -36,10 +36,10 @@ namespace boost { namespace fusion
namespace detail
{
template <typename Tag>
int get_xalloc_index(Tag* = 0)
int get_xalloc_index(int xalloc())
{
// each Tag will have a unique index
static int index = std::ios::xalloc();
static int const index = xalloc();
return index;
}
@ -66,15 +66,19 @@ namespace boost { namespace fusion
{
static arena ar; // our arena
ar.data.push_back(new T(data));
stream.pword(get_xalloc_index<Tag>()) = ar.data.back();
stream.pword(get_xalloc_index<Tag>(stream.xalloc)) = ar.data.back();
}
static T const* get(Stream& stream)
{
return (T const*)stream.pword(get_xalloc_index<Tag>());
return (T const*)stream.pword(get_xalloc_index<Tag>(stream.xalloc));
}
};
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
template <typename Tag, typename Stream>
class string_ios_manip
{
@ -110,7 +114,6 @@ namespace boost { namespace fusion
{
// read a delimiter
string_type const* p = stream_data_t::get(stream);
std::ws(stream);
if (p)
{
@ -137,17 +140,16 @@ namespace boost { namespace fusion
if (stream.get() != c)
{
stream.unget();
stream.setstate(std::ios::failbit);
stream.setstate(Stream::failbit);
}
}
}
Stream& stream;
private:
// silence MSVC warning C4512: assignment operator could not be generated
string_ios_manip& operator= (string_ios_manip const&);
};
#ifdef _MSC_VER
# pragma warning(pop)
#endif
} // detail

View File

@ -10,7 +10,6 @@
#define FUSION_OUT_05052005_0121
#include <boost/fusion/support/config.hpp>
#include <ostream>
#include <boost/fusion/sequence/io/detail/manip.hpp>
#include <boost/mpl/bool.hpp>

View File

@ -10,9 +10,9 @@
#define BOOST_IN_05042005_0120
#include <boost/fusion/support/config.hpp>
#include <istream>
#include <boost/fusion/sequence/io/detail/in.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <iosfwd>
namespace boost { namespace fusion
{

View File

@ -10,11 +10,11 @@
#define BOOST_OUT_05042005_0120
#include <boost/fusion/support/config.hpp>
#include <ostream>
#include <boost/fusion/sequence/io/detail/out.hpp>
#include <boost/fusion/support/is_sequence.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/mpl/or.hpp>
#include <iosfwd>
namespace boost { namespace fusion
{

View File

@ -1,6 +1,6 @@
/*=============================================================================
Copyright (c) 2014 Eric Niebler
Copyright (c) 2014 Kohei Takahashi
Copyright (c) 2014,2015,2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -96,4 +96,45 @@ namespace std
#define BOOST_FUSION_CONSTEXPR_THIS BOOST_CONSTEXPR
#endif
// Workaround for compilers not implementing N3031 (DR743 and DR950).
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || \
BOOST_WORKAROUND(BOOST_GCC, < 40700) || \
defined(BOOST_CLANG) && (__clang_major__ == 3 && __clang_minor__ == 0)
# if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
namespace boost { namespace fusion { namespace detail
{
template <typename T>
using type_alias_t = T;
}}}
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
boost::fusion::detail::type_alias_t<decltype parenthesized_expr>
# else
# include <boost/mpl/identity.hpp>
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
boost::mpl::identity<decltype parenthesized_expr>::type
# endif
#else
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
decltype parenthesized_expr
#endif
// Workaround for GCC 4.6 that rejects defaulted function with noexcept.
#if BOOST_WORKAROUND(BOOST_GCC, / 100 == 406)
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED
#else
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT
#endif
#ifdef _MSC_VER
# define BOOST_FUSION_PUSH_WARNINGS __pragma(warning(push))
# define BOOST_FUSION_POP_WARNINGS __pragma(warning(pop))
# define BOOST_FUSION_DISABLE_MSVC_WARNING(num) __pragma(warning(disable : num))
#else
# define BOOST_FUSION_PUSH_WARNINGS
# define BOOST_FUSION_POP_WARNINGS
# define BOOST_FUSION_DISABLE_MSVC_WARNING(num)
#endif
#endif

View File

@ -10,7 +10,7 @@
#define BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED
#include <boost/fusion/support/config.hpp>
#include <boost/ref.hpp>
#include <boost/core/ref.hpp>
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
#include <functional>

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2016 Lee Clagett
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -8,6 +9,7 @@
#define FUSION_AND_07152016_1625
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
#include <boost/type_traits/integral_constant.hpp>
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
@ -15,7 +17,8 @@
#endif
namespace boost { namespace fusion { namespace detail {
#if defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS)
#if defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS) \
|| BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913))
template<typename ...Cond>
struct and_impl : false_type {};

View File

@ -9,7 +9,7 @@
#define FUSION_AS_FUSION_ELEMENT_05052005_0338
#include <boost/fusion/support/config.hpp>
#include <boost/ref.hpp>
#include <boost/core/ref.hpp>
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
#include <functional>

View File

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

View File

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

View File

@ -8,16 +8,15 @@
#if !defined(FUSION_PAIR_07222005_1203)
#define FUSION_PAIR_07222005_1203
#include <iosfwd>
#include <utility>
#include <boost/fusion/support/config.hpp>
#include <iosfwd>
#include <boost/fusion/support/detail/access.hpp>
#include <boost/fusion/support/detail/as_fusion_element.hpp>
#include <boost/fusion/support/detail/enabler.hpp>
#include <boost/core/enable_if.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/config.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_convertible.hpp>
#include <boost/type_traits/remove_cv_ref.hpp>
#include <boost/type_traits/is_lvalue_reference.hpp>
#if defined (BOOST_MSVC)
# pragma warning(push)
@ -34,46 +33,54 @@ namespace boost { namespace fusion
pair()
: second() {}
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair(pair const& rhs)
: second(rhs.second) {}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair(pair&& rhs)
: second(BOOST_FUSION_FWD_ELEM(Second, rhs.second)) {}
#endif
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair(typename detail::call_param<Second>::type val)
: second(val) {}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Second2>
BOOST_FUSION_GPU_ENABLED
pair(typename remove_cv_ref<Second>::type&& val)
: second(BOOST_FUSION_FWD_ELEM(Second, val)) {}
pair(Second2&& val
, typename boost::disable_if<is_lvalue_reference<Second2> >::type* /* dummy */ = 0
, typename boost::enable_if<is_convertible<Second2, Second> >::type* /*dummy*/ = 0
) : second(BOOST_FUSION_FWD_ELEM(Second, val)) {}
#endif
template <typename Second2>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair(pair<First, Second2> const& rhs,
typename disable_if<is_same<Second, Second2>, detail::enabler_>::type = detail::enabler,
typename enable_if<is_convertible<Second2, Second>, detail::enabler_>::type = detail::enabler)
pair(pair<First, Second2> const& rhs)
: second(rhs.second) {}
template <typename Second2>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename disable_if<is_same<Second, Second2>, pair&>::type
operator=(pair<First, Second2> const& rhs)
pair& operator=(pair<First, Second2> const& rhs)
{
second = rhs.second;
return *this;
}
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair& operator=(pair const& rhs)
{
second = rhs.second;
return *this;
}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename Second2>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
pair(pair<First, Second2>&& rhs,
typename disable_if<is_same<Second, Second2>, detail::enabler_>::type = detail::enabler,
typename enable_if<is_convertible<Second2, Second>, detail::enabler_>::type = detail::enabler)
: second(std::move(rhs.second)) {}
template <typename Second2>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename disable_if<is_same<Second, Second2>, pair&>::type
operator=(pair<First, Second2>&& rhs)
pair& operator=(pair&& rhs)
{
second = std::move(rhs.second);
second = BOOST_FUSION_FWD_ELEM(Second, rhs.second);
return *this;
}
#endif
@ -113,6 +120,17 @@ namespace boost { namespace fusion
return pair<First, typename detail::as_fusion_element<Second>::type>(val);
}
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
template <typename First, typename Second>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
inline typename result_of::make_pair<First,Second>::type
make_pair(Second&& val)
{
return pair<First, typename detail::as_fusion_element<Second>::type>(
BOOST_FUSION_FWD_ELEM(Second, val));
}
#endif
template <typename First, typename Second>
inline std::ostream&
operator<<(std::ostream& os, pair<First, Second> const& p)

View File

@ -48,11 +48,17 @@ namespace boost { namespace fusion
{
BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
template<typename Sequence, typename Active=void>
struct tag_of_fallback
{
typedef non_fusion_tag type;
};
template <typename Sequence, typename Active>
struct tag_of_impl
: mpl::if_<fusion::detail::is_mpl_sequence<Sequence>,
mpl::identity<mpl_sequence_tag>,
mpl::identity<non_fusion_tag> >::type
mpl::identity<typename tag_of_fallback<Sequence>::type> >::type
{};
template <typename Sequence>

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -10,7 +11,6 @@
#include <boost/fusion/support/config.hpp>
#include <iosfwd>
#include <boost/config.hpp>
#if defined(BOOST_MSVC)
# pragma warning(push)
# pragma warning(disable: 4522) // multiple assignment operators specified warning
@ -23,45 +23,16 @@ namespace boost { namespace fusion
struct unused_type
{
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
unused_type() BOOST_NOEXCEPT
BOOST_DEFAULTED_FUNCTION(
unused_type() BOOST_FUSION_NOEXCEPT_ON_DEFAULTED,
{
}
})
template <typename T>
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
unused_type(T const&) BOOST_NOEXCEPT
{
}
template <typename T>
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
unused_type const&
operator=(T const&) const BOOST_NOEXCEPT
{
return *this;
}
template <typename T>
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
unused_type&
operator=(T const&) BOOST_NOEXCEPT
{
return *this;
}
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
unused_type const&
operator=(unused_type const&) const BOOST_NOEXCEPT
{
return *this;
}
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
unused_type&
operator=(unused_type const&) BOOST_NOEXCEPT
{
return *this;
}
};
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();

View File

@ -17,5 +17,6 @@
#include <boost/fusion/view/transform_view.hpp>
#include <boost/fusion/view/zip_view.hpp>
#include <boost/fusion/view/flatten_view.hpp>
#include <boost/fusion/view/identity_view.hpp>
#endif

View File

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

View File

@ -22,6 +22,11 @@
#include <boost/mpl/inherit.hpp>
#include <boost/mpl/identity.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct filter_view_tag;
@ -56,13 +61,13 @@ namespace boost { namespace fusion
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
last_type last() const { return fusion::end(seq); }
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
filter_view& operator= (filter_view const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -9,7 +10,6 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/fusion/support/iterator_base.hpp>
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
@ -26,6 +26,11 @@
#include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp>
#include <boost/fusion/view/filter_view/detail/key_of_impl.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct filter_view_iterator_tag;
@ -60,13 +65,13 @@ namespace boost { namespace fusion
: first(filter::iter_call(first_converter::call(in_first))) {}
first_type first;
private:
// silence MSVC warning C4512: assignment operator could not be generated
filter_iterator& operator= (filter_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -19,6 +19,10 @@
#include <boost/fusion/sequence/intrinsic/end.hpp>
#include <boost/fusion/view/flatten_view/flatten_view_iterator.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
@ -52,6 +56,10 @@ namespace boost { namespace fusion
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
namespace boost { namespace fusion { namespace extension
{
template<>

View File

@ -19,6 +19,10 @@
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
@ -46,6 +50,10 @@ namespace boost { namespace fusion
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
namespace boost { namespace fusion { namespace detail
{
template<class Iterator, class = void>

View File

@ -0,0 +1,14 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
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_SEQUENCE_IDENTITY_VIEW_HPP_INCLUDED)
#define BOOST_FUSION_SEQUENCE_IDENTITY_VIEW_HPP_INCLUDED
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/view/identity_view/identity_view.hpp>
#endif

View File

@ -0,0 +1,50 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
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_IDENTITY_VIEW_HPP_INCLUDED)
#define BOOST_FUSION_IDENTITY_VIEW_HPP_INCLUDED
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/view/transform_view.hpp>
#include <boost/functional/identity.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion {
namespace detail {
struct identity : boost::identity
{
};
}
}}
namespace boost {
template<typename T>
struct result_of<fusion::detail::identity(T)>
{
typedef T type;
};
}
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion {
template<typename Sequence> struct identity_view
: transform_view<Sequence, detail::identity>
{
typedef transform_view<Sequence, detail::identity> base_type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
identity_view(Sequence& in_seq)
: base_type(in_seq, detail::identity()) {}
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -25,6 +25,11 @@
#include <boost/mpl/inherit.hpp>
#include <boost/mpl/identity.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct joint_view_tag;
@ -70,14 +75,15 @@ namespace boost { namespace fusion
concat_last_type concat_last() const { return fusion::end(seq2); }
private:
// silence MSVC warning C4512: assignment operator could not be generated
joint_view& operator= (joint_view const&);
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -20,6 +20,11 @@
#include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
#include <boost/static_assert.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct joint_view_iterator_tag;
@ -49,13 +54,13 @@ namespace boost { namespace fusion
first_type first;
concat_type concat;
private:
// silence MSVC warning C4512: assignment operator could not be generated
joint_view_iterator& operator= (joint_view_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -26,6 +26,11 @@
#include <boost/fusion/view/nview/detail/distance_impl.hpp>
#include <boost/fusion/view/nview/detail/equal_to_impl.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct nview_iterator_tag;
@ -46,14 +51,14 @@ namespace boost { namespace fusion
: seq(in_seq) {}
Sequence& seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
nview_iterator& operator= (nview_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -18,6 +18,10 @@
#include <boost/fusion/view/repetitive_view/detail/begin_impl.hpp>
#include <boost/fusion/view/repetitive_view/detail/end_impl.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
@ -43,12 +47,12 @@ namespace boost { namespace fusion
: seq(in_seq) {}
stored_seq_type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
repetitive_view& operator= (repetitive_view const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -19,6 +19,11 @@
#include <boost/fusion/view/repetitive_view/detail/next_impl.hpp>
#include <boost/fusion/view/repetitive_view/detail/value_of_impl.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct repetitive_view_iterator_tag;
@ -46,13 +51,13 @@ namespace boost { namespace fusion
Sequence& seq;
pos_type pos;
private:
// silence MSVC warning C4512: assignment operator could not be generated
repetitive_view_iterator& operator= (repetitive_view_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Christopher Schmidt
Copyright (c) 2021-2022 Denis Mikhailov
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -10,6 +11,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/deref_data.hpp>
#include <boost/fusion/iterator/prior.hpp>
namespace boost { namespace fusion { namespace extension
{
@ -23,14 +25,18 @@ namespace boost { namespace fusion { namespace extension
struct apply
{
typedef typename
result_of::deref_data<typename It::first_type>::type
result_of::deref_data<
typename result_of::prior<
typename It::first_type
>::type
>::type
type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(It const& it)
{
return fusion::deref_data(it.first);
return fusion::deref_data(fusion::prior(it.first));
}
};
};

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Christopher Schmidt
Copyright (c) 2021-2022 Denis Mikhailov
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -10,6 +11,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/key_of.hpp>
#include <boost/fusion/iterator/prior.hpp>
namespace boost { namespace fusion { namespace extension
{
@ -21,8 +23,15 @@ namespace boost { namespace fusion { namespace extension
{
template <typename It>
struct apply
: result_of::key_of<typename It::it_type>
{};
{
typedef typename
result_of::key_of<
typename result_of::prior<
typename It::first_type
>::type
>::type
type;
};
};
}}}

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2009 Christopher Schmidt
Copyright (c) 2021-2022 Denis Mikhailov
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -10,6 +11,7 @@
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/value_of_data.hpp>
#include <boost/fusion/iterator/prior.hpp>
namespace boost { namespace fusion { namespace extension
{
@ -21,8 +23,15 @@ namespace boost { namespace fusion { namespace extension
{
template <typename It>
struct apply
: result_of::value_of_data<typename It::first_type>
{};
{
typedef typename
result_of::value_of_data<
typename result_of::prior<
typename It::first_type
>::type
>::type
type;
};
};
}}}

View File

@ -27,6 +27,11 @@
#include <boost/mpl/inherit.hpp>
#include <boost/mpl/identity.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct reverse_view_tag;
@ -60,13 +65,13 @@ namespace boost { namespace fusion
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
last_type last() const { return fusion::end(seq); }
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
private:
// silence MSVC warning C4512: assignment operator could not be generated
reverse_view& operator= (reverse_view const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -24,6 +24,11 @@
#include <boost/type_traits/is_base_of.hpp>
#include <boost/static_assert.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct reverse_view_iterator_tag;
@ -47,13 +52,13 @@ namespace boost { namespace fusion
: first(converter::call(in_first)) {}
first_type first;
private:
// silence MSVC warning C4512: assignment operator could not be generated
reverse_view_iterator& operator= (reverse_view_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -20,9 +20,9 @@
#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
#include <boost/config.hpp>
#if defined (BOOST_MSVC)
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning (disable: 4512) // assignment operator could not be generated.
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
@ -45,12 +45,13 @@ namespace boost { namespace fusion
: view(in_view) {}
SingleView& view;
private:
single_view_iterator& operator=(single_view_iterator const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{
@ -60,10 +61,6 @@ namespace std
}
#endif
#if defined (BOOST_MSVC)
# pragma warning(pop)
#endif
#endif

View File

@ -1,38 +0,0 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2007 Dan Marsden
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936)
#define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936
#include <boost/fusion/support/config.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
struct void_;
namespace detail
{
template <typename F>
struct apply_transform_result
{
template <typename T0, typename T1 = void_>
struct apply
: boost::result_of<F(T0, T1)>
{};
template <typename T0>
struct apply<T0, void_>
: boost::result_of<F(T0)>
{};
};
}
}}
#endif

View File

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

View File

@ -0,0 +1,73 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
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_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM)
#define BOOST_FUSION_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/deref.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/is_reference.hpp>
#include <boost/type_traits/is_const.hpp>
#include <boost/utility/result_of.hpp>
#include <boost/mpl/if.hpp>
namespace boost { namespace fusion
{
struct transform_view_iterator_tag;
struct transform_view_iterator2_tag;
namespace extension
{
template<typename Tag>
struct deref_data_impl;
// Unary Version
template<>
struct deref_data_impl<transform_view_iterator_tag>
{
template <typename Iterator>
struct apply
{
typedef typename
result_of::deref<typename Iterator::first_type>::type
value_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type transformed_type;
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
typedef typename transformed_type_unconst::second_type raw_type;
typedef typename
boost::mpl::if_<
is_reference<transformed_type>
, typename boost::mpl::if_<
is_const<transformed_type_unref>
, typename boost::add_reference<typename boost::add_const<raw_type>::type>::type
, typename boost::add_reference<raw_type>::type
>::type
, raw_type
>::type
type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
call(Iterator const& i)
{
return i.f(fusion::deref(i.first)).second;
}
};
};
// Binary Version is not supported with Associative Sequence
}
}}
#endif

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -8,10 +9,8 @@
#define FUSION_DEREF_IMPL_07162005_1026
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/iterator/deref.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
@ -34,8 +33,8 @@ namespace boost { namespace fusion
result_of::deref<typename Iterator::first_type>::type
value_type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
@ -60,8 +59,8 @@ namespace boost { namespace fusion
result_of::deref<typename Iterator::first2_type>::type
value2_type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static type
@ -70,7 +69,7 @@ namespace boost { namespace fusion
return i.f(*i.first1, *i.first2);
}
};
};
};
}
}}

View File

@ -0,0 +1,49 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
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_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM)
#define BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/deref.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
struct transform_view_iterator_tag;
struct transform_view_iterator2_tag;
namespace extension
{
template<typename Tag>
struct key_of_impl;
// Unary Version
template<>
struct key_of_impl<transform_view_iterator_tag>
{
template <typename Iterator>
struct apply
{
typedef typename
result_of::deref<typename Iterator::first_type>::type
value_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type transformed_type;
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
typedef typename transformed_type_unconst::first_type type;
};
};
// Binary Version is not supported with Associative Sequence
}
}}
#endif

View File

@ -1,6 +1,7 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2005-2006 Dan Marsden
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -9,9 +10,8 @@
#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion {
struct transform_view_tag;
@ -29,9 +29,8 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence_type, N>::type value_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
typedef typename result_of::value_at<typename Seq::sequence_type, N>::type value_type;
typedef typename boost::result_of<F(value_type)>::type type;
};
};
@ -42,10 +41,9 @@ namespace boost { namespace fusion {
struct apply
{
typedef typename Seq::transform_type F;
typedef detail::apply_transform_result<F> transform_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
typedef typename result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
typedef typename result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
};
};
}

View File

@ -0,0 +1,49 @@
/*=============================================================================
Copyright (c) 2022 Denis Mikhailov
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_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM)
#define BOOST_FUSION_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM
#include <boost/fusion/support/config.hpp>
#include <boost/fusion/iterator/deref.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
struct transform_view_iterator_tag;
struct transform_view_iterator2_tag;
namespace extension
{
template<typename Tag>
struct value_of_data_impl;
// Unary Version
template<>
struct value_of_data_impl<transform_view_iterator_tag>
{
template <typename Iterator>
struct apply
{
typedef typename
result_of::deref<typename Iterator::first_type>::type
value_type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type transformed_type;
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
typedef typename transformed_type_unconst::second_type type;
};
};
// Binary Version is not supported with Associative Sequence
}
}}
#endif

View File

@ -1,5 +1,6 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@ -8,9 +9,8 @@
#define FUSION_VALUE_OF_IMPL_07162005_1030
#include <boost/fusion/support/config.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/fusion/iterator/value_of.hpp>
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
#include <boost/utility/result_of.hpp>
namespace boost { namespace fusion
{
@ -33,8 +33,8 @@ namespace boost { namespace fusion
result_of::value_of<typename Iterator::first_type>::type
value_type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value_type>::type type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value_type)>::type type;
};
};
@ -52,8 +52,8 @@ namespace boost { namespace fusion
result_of::value_of<typename Iterator::first2_type>::type
value2_type;
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
typedef typename Iterator::transform_type F;
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
};
};
}

View File

@ -27,6 +27,11 @@
#include <boost/fusion/sequence/intrinsic/size.hpp>
#include <boost/mpl/bool.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
struct void_;
@ -75,10 +80,6 @@ namespace boost { namespace fusion
transform_type f;
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
private:
// silence MSVC warning C4512: assignment operator could not be generated
transform_view& operator= (transform_view const&);
};
// Unary Version
@ -112,13 +113,13 @@ namespace boost { namespace fusion
last_type last() const { return fusion::end(seq); }
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
transform_view& operator= (transform_view const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#endif

View File

@ -19,6 +19,14 @@
#include <boost/fusion/view/transform_view/detail/advance_impl.hpp>
#include <boost/fusion/view/transform_view/detail/distance_impl.hpp>
#include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp>
#include <boost/fusion/view/transform_view/detail/key_of_impl.hpp>
#include <boost/fusion/view/transform_view/detail/value_of_data_impl.hpp>
#include <boost/fusion/view/transform_view/detail/deref_data_impl.hpp>
#ifdef _MSC_VER
# pragma warning(push)
# pragma warning(disable: 4512) // assignment operator could not be generated.
#endif
namespace boost { namespace fusion
{
@ -41,10 +49,6 @@ namespace boost { namespace fusion
first_type first;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
transform_view_iterator& operator= (transform_view_iterator const&);
};
// Binary Version
@ -69,13 +73,13 @@ namespace boost { namespace fusion
first1_type first1;
first2_type first2;
transform_type f;
private:
// silence MSVC warning C4512: assignment operator could not be generated
transform_view_iterator2& operator= (transform_view_iterator2 const&);
};
}}
#ifdef _MSC_VER
# pragma warning(pop)
#endif
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
namespace std
{

View File

@ -9,8 +9,8 @@
<toolset name="msvc-11.0"/>
<toolset name="msvc-12.0"/>
<toolset name="qcc-4.4.2_x86"/>
<toolset name="gcc-gnu-4.4~c++0x*"/>
<toolset name="gcc-gnu-4.4~gnu0x*"/>
<toolset name="gcc-4.4~c++0x*"/>
<toolset name="gcc-4.4~gnu0x*"/>
<note author="Kohei Takahashi">
The compiler doesn't generate defaulted move ctor/assgin thus
perform copy construction/assginment. Even though such case,

View File

@ -16,5 +16,6 @@
"Joel de Guzman <joel -at- boost-consulting.com>",
"Dan Marsden <danmarsden -at- yahoo.co.uk>",
"Tobias Schwinger <tschwinger -at- isonews2.com>"
]
],
"cxxstd": "03"
}

View File

@ -66,6 +66,7 @@ project
[ run algorithm/zip2.cpp ]
[ run algorithm/zip_ignore.cpp ]
[ run algorithm/flatten.cpp ]
[ compile algorithm/ticket-5490.cpp ]
[ run sequence/as_deque.cpp ]
[ run sequence/as_list.cpp ]
@ -155,6 +156,7 @@ project
: <define>BOOST_FUSION_DISABLE_VARIADIC_VECTOR
: tuple_traits__no_variadic ]
[ run sequence/transform_view.cpp ]
[ run sequence/identity_view.cpp ]
[ run sequence/vector_comparison.cpp ]
[ run sequence/vector_construction.cpp ]
[ run sequence/vector_conversion.cpp ]
@ -237,6 +239,7 @@ project
[ run sequence/ref_vector.cpp ]
[ run sequence/flatten_view.cpp ]
[ compile sequence/github-159.cpp ]
[ run sequence/github-176.cpp ]
[ compile sequence/size.cpp ]
@ -255,7 +258,7 @@ project
[ run sequence/swap.cpp ]
[ compile support/is_sequence.cpp ]
[ compile support/pair_conversion.cpp ]
[ compile support/is_view.cpp ]
[ compile support/pair_deque.cpp ]
[ compile support/pair_list.cpp ]
[ compile support/pair_map.cpp ]
@ -267,8 +270,12 @@ project
[ compile support/and.cpp
: [ requires cxx11_variadic_templates ] ]
[ compile support/tag_of.cpp ]
[ compile support/pair_trivially_copyable.cpp
: [ requires cxx11_hdr_type_traits ] ]
[ compile support/unused.cpp ]
[ compile support/detail/tag_of_fallback.cpp ]
[ compile-fail support/make_pair_r-value.cpp ]
[ compile support/make_pair_r-value.cpp
: [ requires cxx11_rvalue_references ] ]
# [ compile-fail xxx.cpp ]

View File

@ -1,13 +1,15 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/adapted/mpl.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include <boost/fusion/sequence/comparison/equal_to.hpp>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/mpl/vector_c.hpp>
@ -29,6 +31,15 @@ struct increment
}
};
struct mutable_increment : increment
{
template <typename T>
void operator()(T& v)
{
return increment::operator()(v);
}
};
int
main()
{
@ -44,9 +55,20 @@ main()
}
{
char const ruby[] = "Ruby";
typedef vector<int, char, double, char const*> vector_type;
vector_type v(1, 'x', 3.3, "Ruby");
vector_type v(1, 'x', 3.3, ruby);
for_each(v, increment());
BOOST_TEST_EQ(v, vector_type(2, 'y', 4.3, ruby + 1));
std::cout << v << std::endl;
}
{
char const ruby[] = "Ruby";
typedef vector<int, char, double, char const*> vector_type;
vector_type v(1, 'x', 3.3, ruby);
for_each(v, mutable_increment());
BOOST_TEST_EQ(v, vector_type(2, 'y', 4.3, ruby + 1));
std::cout << v << std::endl;
}

View File

@ -1,14 +1,17 @@
/*=============================================================================
Copyright (c) 2001-2011 Joel de Guzman
Copyright (c) 2011 Eric Niebler
Copyright (c) 2018 Kohei Takahashi
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/
#include <boost/detail/lightweight_test.hpp>
#include <boost/core/lightweight_test.hpp>
#include <boost/fusion/container/vector/vector.hpp>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/sequence/comparison/equal_to.hpp>
#include <boost/fusion/sequence/io/out.hpp>
#include "../sequence/tree.hpp"
struct print
@ -20,6 +23,31 @@ struct print
}
};
struct increment
{
template <typename T>
void operator()(T& v) const
{
++v;
}
};
struct mutable_increment : increment
{
template <typename T>
void operator()(T& v)
{
return increment::operator()(v);
}
};
template <typename F, typename Tree>
void test(Tree tree, Tree const& expected)
{
boost::fusion::for_each(tree, F());
BOOST_TEST_EQ(tree, expected);
}
int
main()
{
@ -42,6 +70,69 @@ main()
)
, print()
);
std::cout << std::endl;
}
{
test<increment>(
make_tree(
make_vector(double(0),'B')
, make_tree(
make_vector(1,2,long(3))
, make_tree(make_vector('a','b','c'))
, make_tree(make_vector(short('d'),'e','f'))
)
, make_tree(
make_vector(4,5,6)
, make_tree(make_vector(float(1),'h','i'))
, make_tree(make_vector('j','k','l'))
)
)
, make_tree(
make_vector(double(1),'C')
, make_tree(
make_vector(2,3,long(4))
, make_tree(make_vector('b','c','d'))
, make_tree(make_vector(short('e'),'f','g'))
)
, make_tree(
make_vector(5,6,7)
, make_tree(make_vector(float(2),'i','j'))
, make_tree(make_vector('k','l','m'))
)
)
);
}
{
test<mutable_increment>(
make_tree(
make_vector(double(0),'B')
, make_tree(
make_vector(1,2,long(3))
, make_tree(make_vector('a','b','c'))
, make_tree(make_vector(short('d'),'e','f'))
)
, make_tree(
make_vector(4,5,6)
, make_tree(make_vector(float(1),'h','i'))
, make_tree(make_vector('j','k','l'))
)
)
, make_tree(
make_vector(double(1),'C')
, make_tree(
make_vector(2,3,long(4))
, make_tree(make_vector('b','c','d'))
, make_tree(make_vector(short('e'),'f','g'))
)
, make_tree(
make_vector(5,6,7)
, make_tree(make_vector(float(2),'i','j'))
, make_tree(make_vector('k','l','m'))
)
)
);
}
return boost::report_errors();

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