mirror of
https://github.com/boostorg/fusion.git
synced 2025-07-04 08:06:30 +02:00
Compare commits
538 Commits
boost-1.58
...
develop
Author | SHA1 | Date | |
---|---|---|---|
495539ce44 | |||
f86ddcce37 | |||
ce8b031f54 | |||
7d4c03fa03 | |||
5d19cc2d57 | |||
049303436c | |||
8c32ebea0b | |||
3044c2beaf | |||
d6298309fb | |||
0a2da9d0ac | |||
036b90cd5d | |||
cd2d748648 | |||
05c2c97ea0 | |||
6ee2b188ef | |||
03500e4fd3 | |||
3c82db82df | |||
287ca90947 | |||
a884709253 | |||
8d8db27953 | |||
72c5c094b9 | |||
b13fc27cf2 | |||
efe3d59c73 | |||
622e048cf2 | |||
2a9a44ee7c | |||
aca00012d1 | |||
c4e7f2bb1a | |||
3a98d9dbeb | |||
116768f3b2 | |||
df37668501 | |||
2a70da0170 | |||
60408efa18 | |||
d49b59bdf9 | |||
e15016adb6 | |||
24138813d6 | |||
0c6c0b17e5 | |||
95b6ebdc61 | |||
dd3bf8aa3e | |||
3f6f947233 | |||
6191e9763a | |||
14c22945cc | |||
a19d919f7b | |||
9a65c81640 | |||
1c858a5fdc | |||
3c749cbf49 | |||
4c4d2ad66c | |||
63727a3f16 | |||
bbddc4f10a | |||
22be72a3c5 | |||
9a2f490130 | |||
90721d48e9 | |||
427d46e7dc | |||
195a0521eb | |||
d2f9a048f7 | |||
1a9faa6744 | |||
1a16250b06 | |||
cdf26a72e9 | |||
2a295202f7 | |||
afba308e47 | |||
662567cb9f | |||
d9c89fc17c | |||
c59c1790c3 | |||
11abd9b156 | |||
62b45086c0 | |||
596056930a | |||
41aae2c684 | |||
41fe9ba9b5 | |||
2aed5b1ab5 | |||
360dd957f2 | |||
cc865135c9 | |||
c16e4f046b | |||
58e72e74a6 | |||
638855c861 | |||
cf99c66176 | |||
516a7a7add | |||
41b38d4adc | |||
fa5f1b7741 | |||
d8e3cc29da | |||
af411a959c | |||
51629ef53a | |||
e79a8690f0 | |||
8f49ff2006 | |||
ba320bf395 | |||
7fe4a887ae | |||
6539567952 | |||
6b2a3b96ac | |||
499c66537b | |||
37ed70fc43 | |||
5d78322e16 | |||
283d1a62c4 | |||
2dceadd1f0 | |||
6da4ec1ae5 | |||
8e58e09ba7 | |||
45054c239b | |||
145b54d060 | |||
d77dc74c7f | |||
b50f10d1dd | |||
23e78a5974 | |||
d22982e3a9 | |||
1c5d3ac6f6 | |||
13593be807 | |||
21a449ae46 | |||
d26c2e4212 | |||
b0f60d5933 | |||
eed79cb557 | |||
438d4d1874 | |||
9c1105ca00 | |||
37f64aa622 | |||
9be3b29738 | |||
a57683a68d | |||
e3429dac26 | |||
aa5ea2af69 | |||
2bb8a26c5b | |||
95cf8bdb8d | |||
380a2bc7a0 | |||
f07cca743f | |||
5db3ed8134 | |||
8ea7f31294 | |||
10f44ff5a0 | |||
12c5097cf7 | |||
ccdcdd5610 | |||
25f12dedc8 | |||
c199f5c6fa | |||
de61a00d62 | |||
3e20342084 | |||
500e4c120f | |||
b0f80684fd | |||
38060fab3a | |||
198458a9f2 | |||
4a699a39f5 | |||
b93b4c9a86 | |||
5a9bfa3d7d | |||
c46e492d45 | |||
4979945690 | |||
9dca58bd33 | |||
c3af48d345 | |||
70c38c7bf7 | |||
edddad2b4e | |||
b3c212c47f | |||
4778c4c180 | |||
5f30a8da60 | |||
fc32335387 | |||
b5751ae85d | |||
e5a007579f | |||
3e07b3f66b | |||
08076be2ac | |||
4c51811315 | |||
19d6c7ad3b | |||
1c693f05bf | |||
b180146e3d | |||
68affa1706 | |||
f0089a640e | |||
81a1c2c99a | |||
7b55860d78 | |||
70837a30c5 | |||
2e91d0b78e | |||
e375a4541b | |||
908a34a4ed | |||
62137c0ab7 | |||
753db26073 | |||
309a2d623f | |||
b5ba6cbd2b | |||
2160949150 | |||
6208b083fb | |||
95beeba19c | |||
efe9065b8c | |||
26e8b5e459 | |||
d1da8ee746 | |||
a26dcf59ce | |||
6b5c5be9be | |||
8c36079edb | |||
9db262acf5 | |||
a3abadb884 | |||
3cfbd9826d | |||
c1fea895c2 | |||
6a3ddd1458 | |||
b1f20628bb | |||
b0f0882229 | |||
b8fafe04d9 | |||
95b4500898 | |||
b02cb70760 | |||
77ebd568e1 | |||
e29b1a07f3 | |||
f03bb5ec2e | |||
cc0c684a92 | |||
c740a4dbad | |||
48f8af3e73 | |||
cc3fbc4f5d | |||
bd96a6bcfb | |||
2a95fcc3e9 | |||
47ff2e6cb5 | |||
9036c72a61 | |||
06a2f0560f | |||
c76cd3d6b2 | |||
77959b1d33 | |||
c6448b9e45 | |||
561890429b | |||
23c54602c2 | |||
30c044b03a | |||
a71b9607e1 | |||
102588ae46 | |||
0e4c5127f5 | |||
afb8b150a9 | |||
d832387fdb | |||
0c138de7cb | |||
98b96c3b97 | |||
68be23a0b9 | |||
6f8de8d774 | |||
5221bbbc76 | |||
0e900bba3f | |||
38aa3705d0 | |||
1854626651 | |||
e8da43a539 | |||
3b8fb67b52 | |||
c4881f1862 | |||
e818089a91 | |||
a95a838779 | |||
7443cb1101 | |||
84b1847442 | |||
a273cd8131 | |||
757541f9d2 | |||
dd695c1dbd | |||
96b2e51828 | |||
e962c1abb5 | |||
7899658d8e | |||
e3b053f969 | |||
11a3f250b8 | |||
79262831ef | |||
d8f608c8f1 | |||
2aea153be0 | |||
4734cf4a13 | |||
d5bd71c886 | |||
c3dec40e72 | |||
03ac9086bc | |||
9de3272174 | |||
25c6334c58 | |||
101a056a92 | |||
82f677c169 | |||
479bc3133b | |||
f61bffb21f | |||
4c67886cc2 | |||
38818fbe3d | |||
eeeee9bfbb | |||
eb0cbbc347 | |||
d0c17119e7 | |||
28ea5dacce | |||
6c96720080 | |||
0a8f0f49b2 | |||
cdd1408d2b | |||
540ea0ef0c | |||
671f22b013 | |||
dfceaffc58 | |||
2c86e9d18c | |||
d8e6f406ab | |||
b42314fb02 | |||
806b621931 | |||
39fb05e40f | |||
dc47261890 | |||
099333b61d | |||
71ad390cf0 | |||
821aaee960 | |||
b12c6b6af6 | |||
4eda545405 | |||
5fd8c36079 | |||
e6b5879511 | |||
33ce5701ae | |||
3cd289836d | |||
ffff00b1a2 | |||
c19cd1b0b7 | |||
3452deb057 | |||
0876b9558d | |||
580364a19e | |||
d6921c112a | |||
254d570b3d | |||
5c78fea465 | |||
da4abd0dce | |||
1faac814e3 | |||
3085f76d31 | |||
e18aa85602 | |||
320386dcf1 | |||
cbda55b962 | |||
e992658ce3 | |||
99699ede5d | |||
8243b3088b | |||
3e7d928ddd | |||
26f69719d0 | |||
0e0de6c4f1 | |||
984fcfd276 | |||
62f5ccac53 | |||
cf33f3db4e | |||
dfe08dec2c | |||
7ec3f1a68f | |||
42a01fc3f4 | |||
0d37235d1c | |||
e97f58749f | |||
80a86fbcd4 | |||
6bef7c98b2 | |||
e4b1233262 | |||
38535926bd | |||
1bce525b30 | |||
e606ceeff0 | |||
24d1c7fd1a | |||
e5d073d786 | |||
6a9b7f314d | |||
0471a65ca2 | |||
b6e5285430 | |||
9cb23af898 | |||
437cea006a | |||
7c15df79f2 | |||
503a89dc89 | |||
b24dfd635b | |||
84d8afbb31 | |||
36eac2e77c | |||
bb782de1ff | |||
451e21adb3 | |||
e0ceefafb6 | |||
2952fd254f | |||
1ec001888d | |||
98b81ee102 | |||
f1a619428a | |||
715a7fb729 | |||
fcdcfcd2c5 | |||
6f43cd7f66 | |||
c630611626 | |||
0d8243b36d | |||
ea9a176312 | |||
1747703b1a | |||
c158886591 | |||
5135b5109b | |||
490baac6e2 | |||
6bd644d43d | |||
64af83d999 | |||
e74ccb1cf5 | |||
7b13053c7e | |||
ef2dc2aaae | |||
ef1ca12e81 | |||
a2b8a8f254 | |||
16a069be14 | |||
3b96c3b70b | |||
61fab16418 | |||
928ced256a | |||
599b8d4aef | |||
1a2a8d67aa | |||
d5740f8310 | |||
5906d9c316 | |||
45d9b49ee5 | |||
55150a7fa6 | |||
27321dd18e | |||
79d8e9d11c | |||
904d3c2c01 | |||
7e4ab4f804 | |||
3189580857 | |||
71dcb3e02c | |||
82f24e0f73 | |||
f29e1e8209 | |||
12b25c2c99 | |||
bc6eaf7ab0 | |||
275236f86e | |||
a8b70d6679 | |||
7472e70951 | |||
104f508cef | |||
0263c75cd8 | |||
f7b90f2981 | |||
d314798241 | |||
5ed26ec932 | |||
4ebc028769 | |||
99ad77b92f | |||
e3d16edfb3 | |||
4173b4b97b | |||
9b43ac8ee0 | |||
c9c2c3bad6 | |||
d7d47619b4 | |||
100d223be4 | |||
44c21e0f10 | |||
3125c15ff4 | |||
11cc331f82 | |||
d1cd721969 | |||
2e466ac054 | |||
b88daeb697 | |||
1774972237 | |||
b46aad996a | |||
0526f7c04f | |||
53ba3de15a | |||
64b8406c16 | |||
2492ff9b25 | |||
3919f3ed73 | |||
12792a6c11 | |||
e9d489c07c | |||
8767d374ea | |||
ee718b363f | |||
87fffbead3 | |||
1c05cfc795 | |||
7cf404d096 | |||
0c18e85ecd | |||
bb8b5afc7f | |||
3298875ecc | |||
74c0d5d0ec | |||
e7ec658b62 | |||
4d3891ed31 | |||
1bc343660b | |||
981f71d04f | |||
d6c853f7ad | |||
f88dbb6876 | |||
4d5da0371b | |||
76f49608c7 | |||
73045b4d49 | |||
18742c6922 | |||
277e5ca034 | |||
1ad2e59e07 | |||
2c5c74069f | |||
a81024f617 | |||
c537da605b | |||
1d45a87201 | |||
ce4ccb929c | |||
5114d9419e | |||
ca0d92e68d | |||
c750552a02 | |||
a61285a0a1 | |||
999dad386e | |||
d512378f4e | |||
ef39bc8651 | |||
d2f8ee9f32 | |||
cbd2e1dc1d | |||
a6d1b303b3 | |||
76b7697ba5 | |||
1df7fc1dca | |||
9b77c26a24 | |||
59dfeec815 | |||
4855d1fac1 | |||
d3449ab5e5 | |||
c30fabf98f | |||
de3730c325 | |||
efd595fd10 | |||
e61d08d953 | |||
10d9f0ffba | |||
d9e5a620be | |||
c5ba3af4c0 | |||
22994d7e96 | |||
dc55e5e103 | |||
1bde5c6fa3 | |||
8242c688e7 | |||
24f527d401 | |||
6689de502b | |||
1646a7252b | |||
8761ed1b8d | |||
e37fd170ce | |||
74f0758bca | |||
dae9964b15 | |||
b1bb9921e2 | |||
4fa0a5f550 | |||
ed30a7ca6a | |||
e0debe282c | |||
7fdb3201fa | |||
8eee897e3f | |||
daea1c3142 | |||
2f6e162a7e | |||
bc01b7fa24 | |||
00823cc315 | |||
fc92ba530d | |||
c0fcaae951 | |||
298eeef9c9 | |||
62d9833bbf | |||
b4133761e8 | |||
7739e4026d | |||
f9fda7ce06 | |||
1f8ccd7bc3 | |||
969b475462 | |||
c77f84749f | |||
d937003962 | |||
6fe816fe89 | |||
d29dc277e6 | |||
d5ce74dffd | |||
a31009e73c | |||
8aa35da4c4 | |||
1e21a4eb7a | |||
5cceded23b | |||
78c5228d93 | |||
0e8e857c2f | |||
d197380540 | |||
3d0412bfd1 | |||
275f65f9ad | |||
9c7b7754fb | |||
2b14951660 | |||
973f2d3940 | |||
60cf66ad89 | |||
fb2e4c502f | |||
fffbbdebdf | |||
ddcd3cdf93 | |||
6df8d5a599 | |||
78afb4d3fc | |||
94f3b2a08b | |||
3521ea3417 | |||
ff25066be2 | |||
e0f10734b1 | |||
22268eb083 | |||
869513768d | |||
65fae37660 | |||
cac994a7c6 | |||
14228e9250 | |||
9911e05838 | |||
f22f1624b5 | |||
8b1da45bfe | |||
3b86f61f15 | |||
2445f60981 | |||
6f8c02eb6f | |||
3c34d639df | |||
b10d91ac82 | |||
b902afa5a0 | |||
528e6d16f0 | |||
2153df596b | |||
ce62bb49f3 | |||
265de03026 | |||
83fb0ef7a2 | |||
294a5ce644 | |||
bbdfc9972e | |||
91966ae524 | |||
94f53a8d4c | |||
0fcd2aa328 | |||
83a08934c8 | |||
ccb1aa20d9 | |||
6e569bcdc3 | |||
de50f65380 | |||
72912925cb | |||
da294ebc6d | |||
beba23f36c | |||
a2874ea5fe | |||
e12f59ebf2 | |||
0e24ec0a85 | |||
31b1ee7f73 | |||
53a1a74a10 | |||
1e2841c683 | |||
17928ac385 | |||
789b86fd6c | |||
abb15d1158 | |||
cccbc785d6 | |||
6849e31db0 | |||
6c130b9e44 | |||
a49eb03483 | |||
93a1fc3b87 |
471
.github/workflows/ci.yml
vendored
Normal file
471
.github/workflows/ci.yml
vendored
Normal 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
|
251
.travis.yml
Normal file
251
.travis.yml
Normal file
@ -0,0 +1,251 @@
|
||||
# Copyright 2016, 2017 Peter Dimov
|
||||
# Copyright 2017-2018 Kohei Takahashi
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
language: cpp
|
||||
|
||||
sudo: false
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- BOGUS_JOB=true
|
||||
|
||||
matrix:
|
||||
|
||||
exclude:
|
||||
- env: BOGUS_JOB=true
|
||||
|
||||
include:
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-4.4 CXXSTD=98,0x
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.4
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
#- os: linux
|
||||
# dist: xenial
|
||||
# env: TOOLSET=gcc-4.5 CXXSTD=03,0x
|
||||
# addons:
|
||||
# apt:
|
||||
# packages:
|
||||
# - g++-4.5
|
||||
# sources:
|
||||
# - ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-4.6 CXXSTD=03,0x
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-4.7 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-4.8 CXXSTD=03,11,1y
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-4.9 CXXSTD=03,11,14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-5 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-6 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-7 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=gcc-8 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- 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
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-3.6 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-3.7 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-3.8 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-3.9 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-4.0 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-5.0 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-5.0
|
||||
sources:
|
||||
- llvm-toolchain-xenial-5.0
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-6.0 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-6.0
|
||||
sources:
|
||||
- llvm-toolchain-xenial-6.0
|
||||
|
||||
- os: linux
|
||||
dist: xenial
|
||||
env: TOOLSET=clang-7.0 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-7
|
||||
sources:
|
||||
- llvm-toolchain-xenial-7
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||
|
||||
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/headers tools/boost_install tools/build
|
||||
- git submodule update
|
||||
|
||||
- rm -rf libs/fusion
|
||||
- mv $TRAVIS_BUILD_DIR libs/fusion
|
||||
- ln -s $(pwd)/libs/fusion $TRAVIS_BUILD_DIR
|
||||
|
||||
- ./bootstrap.sh
|
||||
- ./b2 headers
|
||||
|
||||
script:
|
||||
- ./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
|
29
CMakeLists.txt
Normal file
29
CMakeLists.txt
Normal 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
|
||||
)
|
98
appveyor.yml
Normal file
98
appveyor.yml
Normal file
@ -0,0 +1,98 @@
|
||||
# Copyright 2016, 2017 Peter Dimov
|
||||
# Copyright 2017-2018 Kohei Takahashi
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
version: 1.0.{build}-{branch}
|
||||
|
||||
shallow_clone: true
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
TOOLSET: msvc-9.0
|
||||
ADDRMD: 32
|
||||
CXXSTD: latest # fake
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
TOOLSET: msvc-10.0
|
||||
ADDRMD: 32
|
||||
CXXSTD: latest # fake
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
TOOLSET: msvc-11.0
|
||||
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
|
||||
- if "%APPVEYOR_REPO_BRANCH%" == "master" set BOOST_BRANCH=master
|
||||
- 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
|
||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\fusion
|
||||
- cmd /c bootstrap
|
||||
- b2 headers
|
||||
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
|
||||
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET% cxxstd=%CXXSTD% %ADDRMD%
|
34
build.jam
Normal file
34
build.jam
Normal file
@ -0,0 +1,34 @@
|
||||
# Copyright René Ferdinand Rivera Morell 2023-2024
|
||||
# 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)
|
||||
|
||||
require-b2 5.2 ;
|
||||
|
||||
constant boost_dependencies :
|
||||
/boost/config//boost_config
|
||||
/boost/container_hash//boost_container_hash
|
||||
/boost/core//boost_core
|
||||
/boost/function_types//boost_function_types
|
||||
/boost/functional//boost_functional
|
||||
/boost/mpl//boost_mpl
|
||||
/boost/preprocessor//boost_preprocessor
|
||||
/boost/static_assert//boost_static_assert
|
||||
/boost/tuple//boost_tuple
|
||||
/boost/type_traits//boost_type_traits
|
||||
/boost/typeof//boost_typeof
|
||||
/boost/utility//boost_utility ;
|
||||
|
||||
project /boost/fusion
|
||||
: common-requirements
|
||||
<include>include
|
||||
;
|
||||
|
||||
explicit
|
||||
[ alias boost_fusion : : : : <library>$(boost_dependencies) ]
|
||||
[ alias all : boost_fusion test ]
|
||||
;
|
||||
|
||||
call-if : boost-library fusion
|
||||
;
|
||||
|
@ -25,4 +25,8 @@ boostbook quickbook
|
||||
<format>pdf:<xsl:param>img.src.path=$(images_location)/
|
||||
;
|
||||
|
||||
|
||||
###############################################################################
|
||||
alias boostdoc ;
|
||||
explicit boostdoc ;
|
||||
alias boostrelease : quickbook ;
|
||||
explicit boostrelease ;
|
||||
|
@ -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__
|
||||
@ -227,7 +229,7 @@ __random_access_sequence__.
|
||||
struct_name,
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
(BOOST_FUSION_ADAPT_AUTO, member_name2)
|
||||
(auto, member_name2)
|
||||
...
|
||||
)
|
||||
|
||||
@ -240,7 +242,7 @@ The sequence of `member_nameN,` arguments or `(member_typeN, member_nameN)`
|
||||
pairs declares the type and names of each of the struct members that are part of
|
||||
the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macro should be used at global scope, and `struct_name` should be the fully
|
||||
@ -270,8 +272,8 @@ namespace qualified name of the struct to be adapted.
|
||||
// Without BOOST_PP_VARIADICS support :
|
||||
BOOST_FUSION_ADAPT_STRUCT(
|
||||
demo::employee,
|
||||
(BOOST_FUSION_ADAPT_AUTO, name)
|
||||
(BOOST_FUSION_ADAPT_AUTO, age)
|
||||
(auto, name)
|
||||
(auto, age)
|
||||
)
|
||||
|
||||
[endsect]
|
||||
@ -298,7 +300,7 @@ __random_access_sequence__.
|
||||
(struct_name) (specialization_param0)(specialization_param1)...,
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
(BOOST_FUSION_ADAPT_AUTO, member_name2),
|
||||
(auto, member_name2),
|
||||
...
|
||||
)
|
||||
|
||||
@ -316,7 +318,7 @@ The sequence of `member_nameN,` arguments or `(member_typeN, member_nameN)`
|
||||
pairs declares the type and names of each of the struct members that are part of
|
||||
the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macro should be used at global scope, and `struct_name` should be the fully
|
||||
@ -345,7 +347,7 @@ namespace qualified name of the struct to be adapted.
|
||||
(demo::employee) (Name)(Age),
|
||||
(Name, name)
|
||||
(Age, age)
|
||||
(BOOST_FUSION_ADAPT_AUTO, employment_timestamp))
|
||||
(auto, employment_timestamp))
|
||||
|
||||
// Or by infering type completely
|
||||
BOOST_FUSION_ADAPT_TPL_STRUCT(
|
||||
@ -390,7 +392,7 @@ adapted using the given name.
|
||||
struct_name, adapted_name,
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
(BOOST_FUSION_ADAPT_AUTO, member_name2),
|
||||
(auto, member_name2),
|
||||
...
|
||||
)
|
||||
|
||||
@ -400,7 +402,7 @@ adapted using the given name.
|
||||
adapted_name,
|
||||
(member_type0, member_name0)
|
||||
(member_type1, member_name1)
|
||||
(BOOST_FUSION_ADAPT_AUTO, member_name2),
|
||||
(auto, member_name2),
|
||||
...
|
||||
)
|
||||
|
||||
@ -422,7 +424,7 @@ The sequence of `member_nameN,` arguments or `(member_typeN, member_nameN)`
|
||||
pairs declares the type and names of each of the struct members that are part of
|
||||
the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macros should be used at global scope, and `struct_name` should be the fully
|
||||
@ -453,8 +455,8 @@ namespace qualified name of the struct to be converted.
|
||||
// Without BOOST_PP_VARIADICS support :
|
||||
BOOST_FUSION_ADAPT_STRUCT_NAMED(
|
||||
demo::employee, adapted_employee,
|
||||
(BOOST_FUSION_ADAPT_AUTO, name),
|
||||
(BOOST_FUSION_ADAPT_AUTO, age))
|
||||
(auto, name),
|
||||
(auto, age))
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -481,7 +483,7 @@ The sequence of `([member_typeN,] member_nameN, key_typeN)` tuples
|
||||
declares the type, name and key type of each of the struct members
|
||||
that are part of the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macro should be used at global scope, and `struct_name` should be the fully
|
||||
@ -519,8 +521,8 @@ namespace qualified name of the struct to be adapted.
|
||||
// Without BOOST_PP_VARIADICS support :
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT(
|
||||
demo::employee,
|
||||
(BOOST_FUSION_ADAPT_AUTO, name, keys::name),
|
||||
(BOOST_FUSION_ADAPT_AUTO, age, keys::name))
|
||||
(auto, name, keys::name),
|
||||
(auto, age, keys::name))
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -554,7 +556,7 @@ The sequence of `([member_typeN,] member_nameN, key_typeN)`
|
||||
tuples declares the type, name and key type of each of the struct members
|
||||
that are part of the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macro should be used at global scope, and `struct_name` should be the fully
|
||||
@ -641,7 +643,7 @@ The sequence of `(member_typeN, member_nameN, key_typeN)`
|
||||
triples declares the type, name and key type of each of the struct members
|
||||
that are part of the sequence.
|
||||
|
||||
When member_typeN is omitted or set to BOOST_FUSION_ADAPT_AUTO, the type is
|
||||
When member_typeN is omitted or set to auto, the type is
|
||||
infered with Boost.TypeOf.
|
||||
|
||||
The macros should be used at global scope, and `struct_name` should be the fully
|
||||
@ -678,8 +680,8 @@ namespace qualified name of the struct to be converted.
|
||||
// Without BOOST_PP_VARIADICS support :
|
||||
BOOST_FUSION_ADAPT_ASSOC_STRUCT_NAMED(
|
||||
demo::employee, adapted_employee,
|
||||
(BOOST_FUSION_ADAPT_AUTO, name, keys::name)
|
||||
(BOOST_FUSION_ADAPT_AUTO, age, keys::age))
|
||||
(auto, name, keys::name)
|
||||
(auto, age, keys::age))
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -713,7 +715,7 @@ instance of `type_name`.
|
||||
[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types
|
||||
that [^get_expr['N]] denotes to, when omitted the type is deduced from
|
||||
[get_expr['N]] return type via BOOST_TYPEOF. On compiler missing support for
|
||||
variadic macros BOOST_FUSION_ADAPT_AUTO can be used to avoid repeating the type.
|
||||
variadic macros auto can be used to avoid repeating the type.
|
||||
[^set_expr['N]] is the expression that is invoked to set the ['N]th element
|
||||
of an instance of `type_name`. This expression may access variables named
|
||||
`obj` of type `type_name&`, which represent the corresponding instance of
|
||||
@ -823,7 +825,7 @@ instance of `type_name`.
|
||||
[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types
|
||||
that [^get_expr['N]] denotes to, when omitted the type is deduced from
|
||||
[get_expr['N]] return type via BOOST_TYPEOF. On compiler missing support for
|
||||
variadic macros BOOST_FUSION_ADAPT_AUTO can be used to avoid repeating the type.
|
||||
variadic macros auto can be used to avoid repeating the type.
|
||||
[^set_expr['N]] is the expression that is invoked to set the ['N]th element
|
||||
of an instance of `type_name`. This expression may access variables named
|
||||
`obj` of type `type_name&`, which represent the corresponding instance of
|
||||
@ -928,7 +930,7 @@ instance of `type_name`.
|
||||
[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types
|
||||
that [^get_expr['N]] denotes to, when omitted the type is deduced from
|
||||
[get_expr['N]] return type via BOOST_TYPEOF. On compiler missing support for
|
||||
variadic macros BOOST_FUSION_ADAPT_AUTO can be used to avoid repeating the type.
|
||||
variadic macros auto can be used to avoid repeating the type.
|
||||
[^set_expr['N]] is the expression that is invoked to set the ['N]th element
|
||||
of an instance of `type_name`. This expression may access variables named
|
||||
`obj` of type `type_name&`, which represent the corresponding instance of
|
||||
@ -1044,7 +1046,7 @@ instance of `type_name`.
|
||||
[^attribute_type['N]] and [^attribute_const_type['N]] may specify the types
|
||||
that [^get_expr['N]] denotes to, when omitted the type is deduced from
|
||||
[get_expr['N]] return type via BOOST_TYPEOF. On compiler missing support for
|
||||
variadic macros BOOST_FUSION_ADAPT_AUTO can be used to avoid repeating the type.
|
||||
variadic macros auto can be used to avoid repeating the type.
|
||||
[^set_expr['N]] is the expression that is invoked to set the ['N]th element
|
||||
of an instance of `type_name`. This expression may access variables named
|
||||
`obj` of type `type_name&`, which represent the corresponding instance of
|
||||
|
@ -258,6 +258,22 @@ the first call) and [arg_desc] of `seq`.
|
||||
typename result_of_name_macro<Sequence const, State const, F>::type name_macro(
|
||||
Sequence const& seq, State const& initial_state, F f);
|
||||
|
||||
template<
|
||||
typename Sequence,
|
||||
typename State,
|
||||
typename F
|
||||
>
|
||||
typename result_of_name_macro<Sequence, State, F>::type name_macro(
|
||||
Sequence& seq, State& initial_state, F f);
|
||||
|
||||
template<
|
||||
typename Sequence,
|
||||
typename State,
|
||||
typename F
|
||||
>
|
||||
typename result_of_name_macro<Sequence const, State, F>::type name_macro(
|
||||
Sequence const& seq, State& initial_state, F f);
|
||||
|
||||
[def seq_concept_macro [seq_concept]]
|
||||
[def arg_type_id_macro [arg_type_id]]
|
||||
[def arg_id_macro [arg_id]]
|
||||
@ -1722,7 +1738,7 @@ Takes 2 sequences and returns a sequence containing the elements of the first fo
|
||||
template<
|
||||
typename LhSequence,
|
||||
typename RhSequence>
|
||||
typename __result_of_join__<LhSequence, RhSequence>::type join(LhSequence const& lhs, RhSequence const& rhs);
|
||||
typename __result_of_join__<LhSequence const, RhSequence const>::type join(LhSequence const& lhs, RhSequence const& rhs);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
@ -1767,7 +1783,7 @@ Zips sequences together to form a single sequence, whose members are tuples of t
|
||||
...
|
||||
typename SequenceN
|
||||
>
|
||||
typename __result_of_zip__<Sequence1, Sequence2, ... SequenceN>::type
|
||||
typename __result_of_zip__<Sequence1 const, Sequence2 const, ... SequenceN const>::type
|
||||
zip(Sequence1 const& seq1, Sequence2 const& seq2, ... SequenceN const& seqN);
|
||||
|
||||
[table Parameters
|
||||
@ -1886,7 +1902,7 @@ Returns a new sequence with an element added at the end.
|
||||
typename Sequence,
|
||||
typename T
|
||||
>
|
||||
typename __result_of_push_back__<Sequence, T>::type push_back(
|
||||
typename __result_of_push_back__<Sequence const, T>::type push_back(
|
||||
Sequence const& seq, T const& t);
|
||||
|
||||
[table Parameters
|
||||
@ -1927,7 +1943,7 @@ Returns a new sequence with an element added at the beginning.
|
||||
typename Sequence,
|
||||
typename T
|
||||
>
|
||||
typename __result_of_push_front__<Sequence, T>::type push_front(
|
||||
typename __result_of_push_front__<Sequence const, T>::type push_front(
|
||||
Sequence const& seq, T const& t);
|
||||
|
||||
[table Parameters
|
||||
|
@ -66,6 +66,11 @@ cases the most efficient.
|
||||
template <typename T0, typename T1, typename T2..., typename TN>
|
||||
struct vectorN;
|
||||
|
||||
[important Numbered forms will be deprecated in C++11 and it will be provided
|
||||
via aliasing templates. It means that your partial specialization
|
||||
might be compile error. You can detect whether it is aliasing
|
||||
templates or not, using `BOOST_FUSION_HAS_VARIADIC_VECTOR`.]
|
||||
|
||||
[*Variadic form]
|
||||
|
||||
template <
|
||||
@ -81,9 +86,11 @@ The numbered form accepts the exact number of elements. Example:
|
||||
|
||||
vector3<int, char, double>
|
||||
|
||||
The variadic form accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements, where
|
||||
`FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the The variadic form accepts `0` to
|
||||
`FUSION_MAX_VECTOR_SIZE` elements, where `FUSION_MAX_VECTOR_SIZE` is a
|
||||
user definable predefined maximum that defaults to `10`. Example:
|
||||
|
||||
vector<int, char, double>
|
||||
|
||||
@ -232,9 +239,11 @@ each element is peculiarly constant (see __recursive_inline__).
|
||||
>
|
||||
struct list;
|
||||
|
||||
The variadic class interface accepts `0` to `FUSION_MAX_LIST_SIZE`
|
||||
elements, where `FUSION_MAX_LIST_SIZE` is a user definable predefined
|
||||
maximum that defaults to `10`. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic class interface accepts `0` to
|
||||
`FUSION_MAX_LIST_SIZE` elements, where `FUSION_MAX_LIST_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. Example:
|
||||
|
||||
list<int, char, double>
|
||||
|
||||
@ -532,9 +541,11 @@ complexity (see __overloaded_functions__).
|
||||
>
|
||||
struct set;
|
||||
|
||||
The variadic class interface accepts `0` to `FUSION_MAX_SET_SIZE` elements,
|
||||
where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic class interface accepts `0` to
|
||||
`FUSION_MAX_SET_SIZE` elements, where `FUSION_MAX_SET_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. Example:
|
||||
|
||||
set<int, char, double>
|
||||
|
||||
@ -614,9 +625,11 @@ __overloaded_functions__).
|
||||
>
|
||||
struct map;
|
||||
|
||||
The variadic class interface accepts `0` to `FUSION_MAX_MAP_SIZE` elements,
|
||||
where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic class interface accepts `0` to
|
||||
`FUSION_MAX_MAP_SIZE` elements, where `FUSION_MAX_MAP_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. Example:
|
||||
|
||||
map<__pair__<int, char>, __pair__<char, char>, __pair__<double, char> >
|
||||
|
||||
@ -697,10 +710,13 @@ Create a __list__ from one or more values.
|
||||
typename __result_of_make_list__<T0, T1,... TN>::type
|
||||
make_list(T0 const& x0, T1 const& x1... TN const& xN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where
|
||||
`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults
|
||||
to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE`
|
||||
before including any Fusion header to change the default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_LIST_SIZE` elements, where `FUSION_MAX_LIST_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_LIST_SIZE 20
|
||||
|
||||
@ -794,11 +810,13 @@ Create a __vector__ from one or more values.
|
||||
typename __result_of_make_vector__<T0, T1,... TN>::type
|
||||
make_vector(T0 const& x0, T1 const& x1... TN const& xN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements,
|
||||
where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_VECTOR_SIZE` elements, where `FUSION_MAX_VECTOR_SIZE` is a
|
||||
user definable predefined maximum that defaults to `10`. You may define
|
||||
the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any
|
||||
Fusion header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_VECTOR_SIZE 20
|
||||
|
||||
@ -896,11 +914,13 @@ Create a __set__ from one or more values.
|
||||
typename __result_of_make_set__<T0, T1,... TN>::type
|
||||
make_set(T0 const& x0, T1 const& x1... TN const& xN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_SET_SIZE` elements,
|
||||
where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_SET_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_SET_SIZE` elements, where `FUSION_MAX_SET_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_SET_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_SET_SIZE 20
|
||||
|
||||
@ -996,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__
|
||||
@ -1049,10 +1069,13 @@ Constructs a tie using a __list__ sequence.
|
||||
__list__<T0&, T1&,... TN&>
|
||||
list_tie(T0& x0, T1& x1... TN& xN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where
|
||||
`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults
|
||||
to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE`
|
||||
before including any Fusion header to change the default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_LIST_SIZE` elements, where `FUSION_MAX_LIST_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_LIST_SIZE 20
|
||||
|
||||
@ -1096,11 +1119,13 @@ Constructs a tie using a __vector__ sequence.
|
||||
__vector__<T0&, T1&,... TN&>
|
||||
vector_tie(T0& x0, T1& x1... TN& xN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements,
|
||||
where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_VECTOR_SIZE` elements, where `FUSION_MAX_VECTOR_SIZE` is a
|
||||
user definable predefined maximum that defaults to `10`. You may define
|
||||
the preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any
|
||||
Fusion header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_VECTOR_SIZE 20
|
||||
|
||||
@ -1144,11 +1169,14 @@ Constructs a tie using a __map__ sequence.
|
||||
__map__<__pair__<K0, D0&>, __pair__<K1, D1&>,... __pair__<KN, DN&> >
|
||||
map_tie(D0& d0, D1& d1... DN& dN);
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements,
|
||||
where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`, and a corresponding number of key types.
|
||||
You may define the preprocessor constant `FUSION_MAX_MAP_SIZE` before
|
||||
including any Fusion header to change the default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_MAP_SIZE` elements, where `FUSION_MAX_MAP_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`, and a corresponding
|
||||
number of key types. You may define the preprocessor constant
|
||||
`FUSION_MAX_MAP_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
|
||||
#define FUSION_MAX_MAP_SIZE 20
|
||||
|
||||
@ -1249,10 +1277,13 @@ Returns the result type of __make_list__.
|
||||
template <typename T0, typename T1,... typename TN>
|
||||
struct make_list;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where
|
||||
`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults
|
||||
to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE`
|
||||
before including any Fusion header to change the default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_LIST_SIZE` elements, where `FUSION_MAX_LIST_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_LIST_SIZE 20
|
||||
|
||||
@ -1333,11 +1364,13 @@ Returns the result type of __make_vector__.
|
||||
template <typename T0, typename T1,... typename TN>
|
||||
struct make_vector;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements,
|
||||
where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_VECTOR_SIZE` elements, where `FUSION_MAX_VECTOR_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_VECTOR_SIZE 20
|
||||
|
||||
@ -1427,11 +1460,13 @@ Returns the result type of __make_set__.
|
||||
template <typename T0, typename T1,... typename TN>
|
||||
struct make_set;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_SET_SIZE` elements,
|
||||
where `FUSION_MAX_SET_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_SET_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_SET_SIZE` elements, where `FUSION_MAX_SET_SIZE` is a user definable
|
||||
predefined maximum that defaults to `10`. You may define the preprocessor
|
||||
constant `FUSION_MAX_SET_SIZE` before including any Fusion header to change
|
||||
the default. Example:
|
||||
|
||||
#define FUSION_MAX_SET_SIZE 20
|
||||
|
||||
@ -1559,10 +1594,13 @@ Returns the result type of __list_tie__.
|
||||
template <typename T0, typename T1,... typename TN>
|
||||
struct list_tie;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_LIST_SIZE` elements, where
|
||||
`FUSION_MAX_LIST_SIZE` is a user definable predefined maximum that defaults
|
||||
to `10`. You may define the preprocessor constant `FUSION_MAX_LIST_SIZE`
|
||||
before including any Fusion header to change the default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_LIST_SIZE` elements, where `FUSION_MAX_LIST_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_LIST_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_LIST_SIZE 20
|
||||
|
||||
@ -1603,11 +1641,13 @@ Returns the result type of __vector_tie__.
|
||||
template <typename T0, typename T1,... typename TN>
|
||||
struct vector_tie;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_VECTOR_SIZE` elements,
|
||||
where `FUSION_MAX_VECTOR_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_VECTOR_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_VECTOR_SIZE` elements, where `FUSION_MAX_VECTOR_SIZE` is a user
|
||||
definable predefined maximum that defaults to `10`. You may define the
|
||||
preprocessor constant `FUSION_MAX_VECTOR_SIZE` before including any Fusion
|
||||
header to change the default. Example:
|
||||
|
||||
#define FUSION_MAX_VECTOR_SIZE 20
|
||||
|
||||
@ -1695,11 +1735,13 @@ Returns the result type of __map_tie__.
|
||||
template <typename K0, typename K1,... typename KN, typename D0, typename D1,... typename DN>
|
||||
struct map_tie;
|
||||
|
||||
The variadic function accepts `0` to `FUSION_MAX_MAP_SIZE` elements,
|
||||
where `FUSION_MAX_MAP_SIZE` is a user definable predefined maximum that
|
||||
defaults to `10`. You may define the preprocessor constant
|
||||
`FUSION_MAX_MAP_SIZE` before including any Fusion header to change the
|
||||
default. Example:
|
||||
For C++11 compilers, the variadic function interface has no upper bound.
|
||||
|
||||
For C++03 compilers, the variadic function accepts `0` to
|
||||
`FUSION_MAX_MAP_SIZE` elements, where `FUSION_MAX_MAP_SIZE` is a user definable
|
||||
predefined maximum that defaults to `10`. You may define the preprocessor
|
||||
constant `FUSION_MAX_MAP_SIZE` before including any Fusion header to change
|
||||
the default. Example:
|
||||
|
||||
#define FUSION_MAX_MAP_SIZE 20
|
||||
|
||||
@ -1963,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
|
||||
{
|
||||
@ -2180,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
|
||||
{
|
||||
|
@ -400,7 +400,7 @@ producing a conforming Fusion sequence.
|
||||
[heading Usage]
|
||||
The user of __sequence_facade__ derives his sequence type from a specialization of __sequence_facade__ and passes the derived sequence type as the first template parameter. The second template parameter should be the traversal category of the sequence being implemented. The 3rd parameter should be set to `mpl::true_` if the sequence is a view.
|
||||
|
||||
The user must the implement the key expressions required by their sequence type.
|
||||
The user must implement the key expressions required by their sequence type.
|
||||
|
||||
[table Parameters
|
||||
[[Name][Description]]
|
||||
@ -447,7 +447,7 @@ producing a conforming Fusion iterator.
|
||||
[heading Usage]
|
||||
The user of iterator_facade derives his iterator type from a specialization of iterator_facade and passes the derived iterator type as the first template parameter. The second template parameter should be the traversal category of the iterator being implemented.
|
||||
|
||||
The user must the implement the key expressions required by their iterator type.
|
||||
The user must implement the key expressions required by their iterator type.
|
||||
|
||||
[table Parameters
|
||||
[[Name][Description]]
|
||||
|
@ -689,7 +689,7 @@ is not implemented).
|
||||
[[`R`] [A possibly const qualified __callable_obj__ type or reference type thereof]]
|
||||
[[`r`] [An object convertible to `R`]]
|
||||
[[`s`] [A __sequence__ of arguments that are accepted by `r`]]
|
||||
[[`f`] [An instance of `fused<R>`]]
|
||||
[[`f`] [An instance of `fused_procedure<R>`]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
@ -2,6 +2,7 @@
|
||||
Copyright (C) 2001-2011 Joel de Guzman
|
||||
Copyright (C) 2006 Dan Marsden
|
||||
Copyright (C) 2010 Christopher Schmidt
|
||||
Copyright (C) 2018 Kohei Takahashi
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -20,39 +21,37 @@
|
||||
]
|
||||
]
|
||||
|
||||
[def __spirit__ [@http://spirit.sourceforge.net Spirit]]
|
||||
[def __phoenix__ [@http://www.boost.org/libs/phoenix/index.html Phoenix]]
|
||||
[def __mpl__ [@http://www.boost.org/libs/mpl/index.html MPL]]
|
||||
[def __spirit__ [@http://boost-spirit.com/home/ Spirit]]
|
||||
[def __phoenix__ [@http://www.boost.org/libs/phoenix Phoenix]]
|
||||
[def __mpl__ [@http://www.boost.org/libs/mpl MPL]]
|
||||
[def __stl__ [@http://en.wikipedia.org/wiki/Standard_Template_Library STL]]
|
||||
[def __tuple__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple]]
|
||||
[def __tuple__ [@http://www.boost.org/libs/tuple Boost.Tuple]]
|
||||
[def __tr1__tuple__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1403.pdf TR1 Tuple]]
|
||||
[def __boost_tools__ [@http://www.boost.org/tools/index.html Boost Tools]]
|
||||
[def __spirit_list__ [@https://lists.sourceforge.net/lists/listinfo/spirit-general Spirit Mailing List]]
|
||||
[def __spirit_general__ [@news://news.gmane.org/gmane.comp.spirit.general Spirit General NNTP news portal]]
|
||||
[def __gmane__ [@http://www.gmane.org Gmane]]
|
||||
[def __mlist_archive__ [@http://news.gmane.org/gmane.comp.parsers.spirit.general]]
|
||||
[def __spirit_list__ [@https://sourceforge.net/projects/spirit/lists/spirit-general Spirit Mailing List]]
|
||||
[def __list_archive__ [@https://sourceforge.net/p/spirit/mailman/spirit-general/ archive]]
|
||||
[def __jaakko_jarvi__ [@http://www.boost.org/people/jaakko_jarvi.htm Jaakko Jarvi]]
|
||||
[def __david_abrahams__ [@http://www.boost.org/people/dave_abrahams.htm David Abrahams]]
|
||||
[def __the_forwarding_problem__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm The Forwarding Problem]]
|
||||
|
||||
[def __boost_any__ [@http://www.boost.org/doc/html/any.html Boost.Any]]
|
||||
[def __boost_any__ [@http://www.boost.org/libs/any Boost.Any Library]]
|
||||
[def __new_iterator_concepts__ [@http://www.boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts]]
|
||||
[def __boost_array_library__ [@http://www.boost.org/doc/html/array.html Boost.Array Library]]
|
||||
[def __boost_variant_library__ [@http://www.boost.org/doc/html/variant.html Boost.Variant Library]]
|
||||
[def __boost_tuple_library__ [@http://www.boost.org/libs/tuple/doc/tuple_users_guide.html Boost.Tuple Library]]
|
||||
[def __boost_ref__ [@http://www.boost.org/doc/html/ref.html Boost.Ref]]
|
||||
[def __boost_ref_call__ [@http://www.boost.org/doc/html/ref.html `ref`]]
|
||||
[def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of Boost.ResultOf]]
|
||||
[def __boost_array_library__ [@http://www.boost.org/libs/array Boost.Array Library]]
|
||||
[def __boost_variant_library__ [@http://www.boost.org/libs/variant Boost.Variant Library]]
|
||||
[def __boost_tuple_library__ [@http://www.boost.org/libs/tuple Boost.Tuple Library]]
|
||||
[def __boost_ref__ [@http://www.boost.org/libs/core/ref.html Ref utility]]
|
||||
[def __boost_ref_call__ [@http://www.boost.org/libs/core/ref.html `ref`]]
|
||||
[def __boost_result_of__ [@http://www.boost.org/libs/utility/utility.htm#result_of ResultOf utility]]
|
||||
[def __boost_result_of_call__ [@http://www.boost.org/libs/utility/utility.htm#result_of `boost::result_of`]]
|
||||
[def __boost_enable_if__ [@http://www.boost.org/libs/utility/enable_if.html Boost.EnableIf utility]]
|
||||
[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr/shared_ptr.htm `boost::shared_ptr`]]
|
||||
[def __boost_func_forward__ [@http://www.boost.org/libs/functional/forward/doc/html/index.html Boost.Functional/Forward]]
|
||||
[def __boost_func_factory__ [@http://www.boost.org/libs/functional/factory/doc/html/index.html Boost.Functional/Factory]]
|
||||
[def __boost_func_hash__ [@http://www.boost.org/doc/html/hash.html Boost.Functional/Hash]]
|
||||
[def __std_pair_doc__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]]
|
||||
[def __boost_enable_if__ [@http://www.boost.org/libs/core/doc/html/core/enable_if.html EnableIf utility]]
|
||||
[def __boost_shared_ptr_call__ [@http://www.boost.org/libs/smart_ptr#shared_ptr `boost::shared_ptr`]]
|
||||
[def __boost_func_forward__ [@http://www.boost.org/libs/functional/forward Boost.Functional/Forward Library]]
|
||||
[def __boost_func_factory__ [@http://www.boost.org/libs/functional/factory Boost.Functional/Factory Library]]
|
||||
[def __boost_func_hash__ [@http://www.boost.org/doc/html/hash.html Boost.ContainerHash Library]]
|
||||
[def __std_pair_doc__ [@http://en.cppreference.com/w/cpp/utility/pair `std::pair`]]
|
||||
[def __std_tuple_doc__ [@http://en.cppreference.com/w/cpp/utility/tuple `std::tuple`]]
|
||||
[def __std_plus_doc__ [@http://www.sgi.com/tech/stl/plus.html `std::plus`]]
|
||||
[def __std_minus_doc__ [@http://www.sgi.com/tech/stl/minus.html `std::minus`]]
|
||||
[def __std_plus_doc__ [@http://en.cppreference.com/w/cpp/utility/functional/plus `std::plus`]]
|
||||
[def __std_minus_doc__ [@http://en.cppreference.com/w/cpp/utility/functional/minus `std::minus`]]
|
||||
|
||||
[def __mpl_integral_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Integral Constant]]
|
||||
[def __mpl_boolean_constant__ [@http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html MPL Boolean Constant]]
|
||||
@ -79,6 +78,7 @@
|
||||
[def __bidirectional_iterator__ [link fusion.iterator.concepts.bidirectional_iterator Bidirectional Iterator]]
|
||||
[def __random_access_iterator__ [link fusion.iterator.concepts.random_access_iterator Random Access Iterator]]
|
||||
[def __associative_iterator__ [link fusion.iterator.concepts.associative_iterator Associative Iterator]]
|
||||
[def __unbounded_iterator__ [link fusion.iterator.concepts.unbounded_iterator Unbounded Iterator]]
|
||||
|
||||
[def __next__ [link fusion.iterator.functions.next `next`]]
|
||||
[def __prior__ [link fusion.iterator.functions.prior `prior`]]
|
||||
@ -108,6 +108,7 @@
|
||||
[def __bidirectional_sequence__ [link fusion.sequence.concepts.bidirectional_sequence Bidirectional Sequence]]
|
||||
[def __random_access_sequence__ [link fusion.sequence.concepts.random_access_sequence Random Access Sequence]]
|
||||
[def __associative_sequence__ [link fusion.sequence.concepts.associative_sequence Associative Sequence]]
|
||||
[def __unbounded_sequence__ [link fusion.sequence.concepts.unbounded_sequence Unbounded Sequence]]
|
||||
|
||||
[def __containers__ [link fusion.container Container]]
|
||||
[def __vector__ [link fusion.container.vector `vector`]]
|
||||
@ -129,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`]]
|
||||
@ -337,6 +339,8 @@
|
||||
|
||||
[def __adt_attribute_proxy__ [link fusion.notes.adt_attribute_proxy `adt_attribute_proxy`]]
|
||||
|
||||
[def __window_function__ [@http://en.wikipedia.org/wiki/Window_function Window Function]]
|
||||
|
||||
[include preface.qbk]
|
||||
[include introduction.qbk]
|
||||
[include quick_start.qbk]
|
||||
|
@ -69,6 +69,8 @@
|
||||
Access Iterator</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/associative_iterator.html">Associative
|
||||
Iterator</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/iterator/concepts/unbounded_iterator.html">Unbounded
|
||||
Iterator</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/iterator/functions.html">Functions</a></span></dt>
|
||||
<dd><dl>
|
||||
@ -116,6 +118,8 @@
|
||||
Access Sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/associative_sequence.html">Associative
|
||||
Sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/sequence/concepts/unbounded_sequence.html">Unbounded
|
||||
Sequence</a></span></dt>
|
||||
</dl></dd>
|
||||
<dt><span class="section"><a href="fusion/sequence/intrinsic.html">Intrinsic</a></span></dt>
|
||||
<dd><dl>
|
||||
@ -159,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>
|
||||
@ -274,7 +279,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: May 10, 2013 at 05:54:18 GMT</small></p></td>
|
||||
<td align="left"><p><small>Last revised: June 25, 2015 at 13:41:27 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
|
@ -254,6 +254,13 @@ 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]
|
||||
|
||||
[section Unbounded Iterator]
|
||||
|
||||
[warning In this release, __unbounded_iterator__ concept has no effect. It's reserved for future release.]
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -60,6 +60,7 @@ link against.
|
||||
* single_view
|
||||
* transform_view
|
||||
* zip_view
|
||||
* identity_view
|
||||
* container
|
||||
* deque
|
||||
* list
|
||||
|
@ -61,11 +61,8 @@ tool. QuickBook can be found in the __boost_tools__.
|
||||
[heading Support]
|
||||
|
||||
Please direct all questions to Spirit's mailing list. You can subscribe to the
|
||||
__spirit_list__. The mailing list has a searchable archive. A search link to
|
||||
this archive is provided in __spirit__'s home page. You may also read and post
|
||||
messages to the mailing list through __spirit_general__ (thanks to __gmane__).
|
||||
The news group mirrors the mailing list. Here is a link to the archives:
|
||||
__mlist_archive__.
|
||||
__spirit_list__. The mailing list has a searchable archive. Here is a link to
|
||||
the archives: __list_archive__.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
[/==============================================================================
|
||||
Copyright (C) 2001-2011 Joel de Guzman
|
||||
Copyright (C) 2006 Dan Marsden
|
||||
Copyright (C) 2018 Kohei Takahashi
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -8,20 +9,20 @@
|
||||
===============================================================================/]
|
||||
[section References]
|
||||
|
||||
# [@http://boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts],
|
||||
# [@http://www.boost.org/libs/iterator/doc/new-iter-concepts.html New Iterator Concepts],
|
||||
David Abrahams, Jeremy Siek, Thomas Witt, 2004-11-01.
|
||||
# [@http://boost.org/libs/tuple/doc/tuple_users_guide.html The Boost Tuple Library],
|
||||
# [@http://www.boost.org/libs/tuple The Boost Tuple Library],
|
||||
Jaakko Jarvi, 2001.
|
||||
# [@http://www.boost.org/libs/spirit/ Spirit Parser Library],
|
||||
# [@http://www.boost.org/libs/spirit Spirit Parser Library],
|
||||
Joel de Guzman, 2001-2006.
|
||||
# [@http://www.boost.org/libs/mpl/ The Boost MPL Library],
|
||||
# [@http://www.boost.org/libs/mpl The Boost MPL Library],
|
||||
Aleksey Gurtovoy and David Abrahams, 2002-2004.
|
||||
# [@http://www.boost.org/doc/html/array.html Boost Array],
|
||||
# [@http://www.boost.org/libs/array The Boost Array Library],
|
||||
Nicolai Josuttis, 2002-2004.
|
||||
# [@http://www.sgi.com/tech/stl/ Standard Template Library Programmer's Guide],
|
||||
Hewlett-Packard Company, 1994.
|
||||
# [@http://www.boost.org/doc/html/ref.html Boost.Ref],
|
||||
# [@http://www.boost.org/libs/core/ref.html Boost.Core / Ref utility],
|
||||
Jaakko Jarvi, Peter Dimov, Douglas Gregor, Dave Abrahams, 1999-2002.
|
||||
# [@http://www.boost.org/libs/hana The Boost Hana Library],
|
||||
Louis Dionne, 2017.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
@ -39,6 +39,11 @@ These concepts pertain to sequence traversal.
|
||||
The __associative_sequence__ concept is orthogonal to traversal. An Associative
|
||||
Sequence allows efficient retrieval of elements based on keys.
|
||||
|
||||
[heading Boundary]
|
||||
|
||||
The __unbounded_sequence__ concept is also orthogonal to traversal and associativity.
|
||||
A Unbounded Sequence allows out-of-bounds access.
|
||||
|
||||
[section Forward Sequence]
|
||||
|
||||
[heading Description]
|
||||
@ -161,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]]
|
||||
]
|
||||
@ -232,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]]
|
||||
]
|
||||
|
||||
@ -316,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]]
|
||||
]
|
||||
|
||||
@ -356,6 +360,56 @@ 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]
|
||||
|
||||
[section Unbounded Sequence]
|
||||
|
||||
[heading Description]
|
||||
|
||||
A Unbounded Sequence allows Out-of-Bounds access: it will achieve something like a __window_function__.
|
||||
Most of the sequences do not meet this concept, but some special usecases do.
|
||||
|
||||
[important User extending sequences should handle any parameters or be SFINAE-friendly.]
|
||||
|
||||
[variablelist Notation
|
||||
[[`s`] [An Fusion Sequence]]
|
||||
[[`S`] [An Fusion Sequence type]]
|
||||
[[`M`] [An __mpl__ integral constant]]
|
||||
[[`N`] [An integral constant]]
|
||||
[[`K`] [An arbitrary /key/ type]]
|
||||
[[`o`] [An arbitrary object]]
|
||||
[[`e`] [A Sequence element]]
|
||||
]
|
||||
|
||||
[heading Valid Expressions]
|
||||
|
||||
[table
|
||||
[[Expression] [Return type] [Type Requirements] [Runtime Complexity]]
|
||||
[[`__at_c__<N>(s)`] [Any type] [] [Depends on its traversability]]
|
||||
[[`__at_c__<N>(s) = o`] [Any type] [] [Depends on its traversability]]
|
||||
[[`__at__<M>(s)`] [Any type] [] [Depends on its traversability]]
|
||||
[[`__at__<M>(s) = o`] [Any type] [] [Depends on its traversability]]
|
||||
[[`__at_key__<K>(s)`] [Any type] [`S` should be __associative_sequence__] [Depends on its traversability]]
|
||||
[[`__at_key__<K>(s) = o`] [Any type] [`S` should be __associative_sequence__] [Depends on its traversability]]
|
||||
]
|
||||
|
||||
[heading Result Type Expressions]
|
||||
|
||||
[table
|
||||
[[Expression] [Compile Time Complexity]]
|
||||
[[`__result_of_at__<S, M>::type`] [Depends on its traversability]]
|
||||
[[`__result_of_at_c__<S, N>::type`] [Depends on its traversability]]
|
||||
[[`__result_of_value_at__<S, M>::type`] [Depends on its traversability]]
|
||||
[[`__result_of_value_at_c__<S, N>::type`] [Depends on its traversability]]
|
||||
[[`__result_of_at_key__<S, K>::type`] [Depends on its traversability]]
|
||||
[[`__result_of_value_at_key__<S, K>::type`] [Depends on its traversability]]
|
||||
]
|
||||
|
||||
[heading Models]
|
||||
|
||||
* none.
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -660,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]
|
||||
@ -686,7 +740,7 @@ element from the beginning of the sequence, is a valid expression. Else,
|
||||
returns a type convertible to the M-th element from the beginning of the
|
||||
sequence.
|
||||
|
||||
[*Precondition]: `0 <= M::value < __size__(s)`
|
||||
[*Precondition]: `0 <= M::value < __size__(seq)` (where `seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Equivalent to
|
||||
|
||||
@ -739,7 +793,7 @@ element from the beginning of the sequence, is a valid expression. Else,
|
||||
returns a type convertible to the N-th element from the beginning of the
|
||||
sequence.
|
||||
|
||||
[*Precondition]: `0 <= N < __size__(s)`
|
||||
[*Precondition]: `0 <= N < __size__(seq)` (where `seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Equivalent to
|
||||
|
||||
@ -833,7 +887,7 @@ the sequence `seq` if `seq` is mutable and `e = o`, where `e` is the
|
||||
element associated with Key, is a valid expression. Else, returns a type
|
||||
convertible to the element associated with Key.
|
||||
|
||||
[*Precondition]: `has_key<Key>(seq) == true`
|
||||
[*Precondition]: `has_key<Key>(seq) == true` (where `seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Returns the element associated with Key.
|
||||
|
||||
@ -1149,6 +1203,8 @@ the actual element type, use __result_of_value_at__].
|
||||
|
||||
[*Return type]: Any type.
|
||||
|
||||
[*Precondition]: `0 <= M::value < __result_of_size__<Seq>::value` (where `Seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Returns the result type of using __at__ to access the `M`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
@ -1191,6 +1247,8 @@ get the actual element type, use __result_of_value_at_c__].
|
||||
|
||||
[*Return type]: Any type
|
||||
|
||||
[*Precondition]: `0 <= N < __result_of_size__<Seq>::value` (where `Seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Returns the result type of using __at_c__ to access the `N`th element of `Seq`.
|
||||
|
||||
[heading Header]
|
||||
@ -1350,6 +1408,8 @@ you want to get the actual element type, use __result_of_value_at_key__].
|
||||
|
||||
[*Return type]: Any type.
|
||||
|
||||
[*Precondition]: `has_key<Seq, Key>::type::value == true` (where `Seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Returns the result of using __at_key__ to access the element with key type `Key` in `Seq`.
|
||||
|
||||
[heading Header]
|
||||
@ -1388,6 +1448,8 @@ Returns the actual element type associated with a Key from the __sequence__.
|
||||
|
||||
[*Return type]: Any type.
|
||||
|
||||
[*Precondition]: `has_key<Seq, Key>::type::value == true` (where `Seq` is not __unbounded_sequence__)
|
||||
|
||||
[*Semantics]: Returns the actual element type associated with key type
|
||||
`Key` in `Seq`.
|
||||
|
||||
@ -1460,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:
|
||||
|
||||
|
@ -227,6 +227,8 @@ And optionally from:
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct associative_tag {};
|
||||
|
||||
struct unbounded_tag {};
|
||||
}}
|
||||
|
||||
[*Semantics]: Establishes the conceptual classification of a particular
|
||||
|
81
doc/view.qbk
81
doc/view.qbk
@ -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]
|
||||
|
@ -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>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_ADVANCE_IMPL_20060222_2150)
|
||||
#ifndef BOOST_FUSION_ADVANCE_IMPL_20060222_2150
|
||||
#define BOOST_FUSION_ADVANCE_IMPL_20060222_2150
|
||||
|
||||
namespace example
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_AT_IMPL_20060223_2017)
|
||||
#ifndef BOOST_FUSION_AT_IMPL_20060223_2017
|
||||
#define BOOST_FUSION_AT_IMPL_20060223_2017
|
||||
|
||||
#include <string>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_AT_KEY_IMPL_20060223_2017)
|
||||
#ifndef BOOST_FUSION_AT_KEY_IMPL_20060223_2017
|
||||
#define BOOST_FUSION_AT_KEY_IMPL_20060223_2017
|
||||
|
||||
#include <string>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_BEGIN_IMPL_20060222_2042)
|
||||
#ifndef BOOST_FUSION_BEGIN_IMPL_20060222_2042
|
||||
#define BOOST_FUSION_BEGIN_IMPL_20060222_2042
|
||||
|
||||
#include "../example_struct_iterator.hpp"
|
||||
|
@ -5,7 +5,7 @@
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037)
|
||||
#ifndef BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_20060223_2037
|
||||
|
||||
#include <boost/fusion/support/category_of.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_DEREF_IMPL_20060222_1952)
|
||||
#ifndef BOOST_FUSION_DEREF_IMPL_20060222_1952
|
||||
#define BOOST_FUSION_DEREF_IMPL_20060222_1952
|
||||
|
||||
#include <boost/static_assert.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_DISTANCE_IMPL_20060223_0814)
|
||||
#ifndef BOOST_FUSION_DISTANCE_IMPL_20060223_0814
|
||||
#define BOOST_FUSION_DISTANCE_IMPL_20060223_0814
|
||||
|
||||
#include <boost/mpl/minus.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_END_IMPL_20060222_2042)
|
||||
#ifndef BOOST_FUSION_END_IMPL_20060222_2042
|
||||
#define BOOST_FUSION_END_IMPL_20060222_2042
|
||||
|
||||
#include "../example_struct_iterator.hpp"
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_EQUAL_TO_IMPL_20060223_1941)
|
||||
#ifndef BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941
|
||||
#define BOOST_FUSION_EQUAL_TO_IMPL_20060223_1941
|
||||
|
||||
#include <boost/mpl/equal_to.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_HAS_KEY_IMPL_20060223_2156)
|
||||
#ifndef BOOST_FUSION_HAS_KEY_IMPL_20060223_2156
|
||||
#define BOOST_FUSION_HAS_KEY_IMPL_20060223_2156
|
||||
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_SEQUENCE_IMPL_20060228_1946)
|
||||
#ifndef BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_20060228_1946
|
||||
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_VIEW_IMPL_200604227_2150)
|
||||
#ifndef BOOST_FUSION_IS_VIEW_IMPL_200604227_2150
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_200604227_2150
|
||||
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_NEXT_IMPL_20060222_1859)
|
||||
#ifndef BOOST_FUSION_NEXT_IMPL_20060222_1859
|
||||
#define BOOST_FUSION_NEXT_IMPL_20060222_1859
|
||||
|
||||
namespace example
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_PRIOR_IMPL_20060222_1944)
|
||||
#ifndef BOOST_FUSION_PRIOR_IMPL_20060222_1944
|
||||
#define BOOST_FUSION_PRIOR_IMPL_20060222_1944
|
||||
|
||||
namespace example
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_SIZE_IMPL_20060223_2033)
|
||||
#ifndef BOOST_FUSION_SIZE_IMPL_20060223_2033
|
||||
#define BOOST_FUSION_SIZE_IMPL_20060223_2033
|
||||
|
||||
#include <boost/mpl/int.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_VALUE_AT_IMPL_20060223_2025)
|
||||
#ifndef BOOST_FUSION_VALUE_AT_IMPL_20060223_2025
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_20060223_2025
|
||||
|
||||
namespace example
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_VALUE_AT_KEY_IMPL_20060223_2025)
|
||||
#ifndef BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025
|
||||
#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20060223_2025
|
||||
|
||||
namespace fields
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_VALUE_OF_IMPL_20060223_1905)
|
||||
#ifndef BOOST_FUSION_VALUE_OF_IMPL_20060223_1905
|
||||
#define BOOST_FUSION_VALUE_OF_IMPL_20060223_1905
|
||||
|
||||
#include <string>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_EXAMPLE_STRUCT)
|
||||
#ifndef BOOST_FUSION_EXAMPLE_STRUCT
|
||||
#define BOOST_FUSION_EXAMPLE_STRUCT
|
||||
|
||||
#include "./tag_of.hpp"
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_EXAMPLE_STRUCT_ITERATOR)
|
||||
#ifndef BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR
|
||||
#define BOOST_FUSION_EXAMPLE_STRUCT_ITERATOR
|
||||
|
||||
#include <boost/fusion/support/iterator_base.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_EXAMPLE_STRUCT_TYPE)
|
||||
#ifndef BOOST_FUSION_EXAMPLE_STRUCT_TYPE
|
||||
#define BOOST_FUSION_EXAMPLE_STRUCT_TYPE
|
||||
|
||||
#include <string>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_TAG_OF_20060222_2052)
|
||||
#ifndef BOOST_FUSION_TAG_OF_20060222_2052
|
||||
#define BOOST_FUSION_TAG_OF_20060222_2052
|
||||
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_ADAPTED_30122005_1420)
|
||||
#ifndef BOOST_FUSION_ADAPTED_30122005_1420
|
||||
#define BOOST_FUSION_ADAPTED_30122005_1420
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -15,12 +15,7 @@
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/comparison/equal.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>
|
||||
@ -45,13 +40,11 @@
|
||||
TEMPLATE_PARAMS_SEQ, \
|
||||
NAME_SEQ, \
|
||||
I, \
|
||||
BOOST_PP_IF(IS_VIEW, BOOST_FUSION_PROXY_PREFIX, BOOST_PP_EMPTY), \
|
||||
BOOST_PP_IIF(IS_VIEW, BOOST_FUSION_PROXY_PREFIX, BOOST_PP_EMPTY), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR(ATTRIBUTE), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 4) \
|
||||
, 1, 0))
|
||||
BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 4)) \
|
||||
|
||||
#define BOOST_FUSION_ADAPT_TPL_ADT(TEMPLATE_PARAMS_SEQ, NAME_SEQ , ATTRIBUTES) \
|
||||
BOOST_FUSION_ADAPT_STRUCT_BASE( \
|
||||
|
@ -14,10 +14,7 @@
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/preprocessor/cat.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/type_traits/add_reference.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
|
||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
||||
@ -46,13 +43,11 @@
|
||||
TEMPLATE_PARAMS_SEQ, \
|
||||
NAME_SEQ, \
|
||||
I, \
|
||||
BOOST_PP_IF(IS_VIEW, BOOST_FUSION_PROXY_PREFIX, BOOST_PP_EMPTY), \
|
||||
BOOST_PP_IIF(IS_VIEW, BOOST_FUSION_PROXY_PREFIX, BOOST_PP_EMPTY), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR(ATTRIBUTE), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 5) \
|
||||
, 1, 0)) \
|
||||
BOOST_PP_LESS( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 5)) \
|
||||
\
|
||||
template< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
|
||||
|
@ -15,12 +15,14 @@
|
||||
#include <boost/fusion/adapted/struct/detail/adapt_is_tpl.hpp>
|
||||
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/control/expr_if.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
#include <boost/preprocessor/seq/elem.hpp>
|
||||
#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>
|
||||
|
||||
@ -36,18 +38,18 @@
|
||||
boost::remove_const<boost::remove_reference<lvalue>::type>::type
|
||||
|
||||
#define BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR(ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE) \
|
||||
BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, \
|
||||
ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE) \
|
||||
BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPLE_SIZE, \
|
||||
BOOST_PP_IF(DEDUCE_TYPE, 0, 2), ATTRIBUTE)
|
||||
|
||||
#define BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_SETEXPR(ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE) \
|
||||
BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, \
|
||||
ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE) \
|
||||
BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPLE_SIZE, \
|
||||
BOOST_PP_IF(DEDUCE_TYPE, 1, 3), ATTRIBUTE)
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
# define BOOST_FUSION_DEDUCED_ATTR_TYPE(NAME_SEQ, ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS( \
|
||||
TEMPLATE_PARAMS_SEQ) \
|
||||
@ -55,52 +57,45 @@
|
||||
struct deduced_attr_type { \
|
||||
static const BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
BOOST_TYPEOF( PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR( \
|
||||
ATTRIBUTE, ATTRIBUTE_TUPEL_SIZE, 1)) type; \
|
||||
ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, 1)) type; \
|
||||
};
|
||||
|
||||
#else
|
||||
# define BOOST_FUSION_DEDUCED_ATTR_TYPE(NAME_SEQ, ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
struct deduced_attr_type { \
|
||||
static const BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj; \
|
||||
typedef BOOST_TYPEOF( PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR( \
|
||||
ATTRIBUTE, ATTRIBUTE_TUPEL_SIZE, 1)) type; \
|
||||
ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, 1)) type; \
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#define BOOST_FUSION_ADT_ATTRIBUTE_TYPEOF( \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPEL_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
BOOST_FUSION_DEDUCED_ATTR_TYPE( \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPEL_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
boost::remove_const< \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
deduced_attr_type::type \
|
||||
>::type type; \
|
||||
\
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
boost::add_const< \
|
||||
BOOST_PP_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ),typename,) \
|
||||
deduced_attr_type::type \
|
||||
>::type const_type;
|
||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
deduced_attr_type::type type; \
|
||||
typedef type const_type;
|
||||
|
||||
#define BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE( \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPEL_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 0, ATTRIBUTE) type; \
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPEL_SIZE, 1, ATTRIBUTE) const_type;
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPLE_SIZE, 0, ATTRIBUTE) type; \
|
||||
typedef BOOST_PP_TUPLE_ELEM(ATTRIBUTE_TUPLE_SIZE, 1, ATTRIBUTE) const_type;
|
||||
|
||||
|
||||
#define BOOST_FUSION_ADAPT_ADT_C_BASE( \
|
||||
TEMPLATE_PARAMS_SEQ,NAME_SEQ,I,PREFIX, \
|
||||
ATTRIBUTE,ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE) \
|
||||
ATTRIBUTE,ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE) \
|
||||
\
|
||||
template< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_TEMPLATE_PARAMS(TEMPLATE_PARAMS_SEQ) \
|
||||
@ -116,7 +111,7 @@
|
||||
BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE)( \
|
||||
NAME_SEQ, \
|
||||
ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, \
|
||||
ATTRIBUTE_TUPLE_SIZE, \
|
||||
PREFIX, \
|
||||
TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
@ -128,7 +123,7 @@
|
||||
Val const& val) \
|
||||
{ \
|
||||
PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_SETEXPR(ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE); \
|
||||
ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
@ -137,7 +132,7 @@
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj) \
|
||||
{ \
|
||||
return PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR(ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE); \
|
||||
ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
@ -146,7 +141,7 @@
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& obj) \
|
||||
{ \
|
||||
return PREFIX() BOOST_FUSION_ADAPT_ADT_ATTRIBUTE_GETEXPR(ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, DEDUCE_TYPE); \
|
||||
ATTRIBUTE_TUPLE_SIZE, DEDUCE_TYPE); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
@ -160,7 +155,7 @@
|
||||
> \
|
||||
{ \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename) \
|
||||
access::adt_attribute_access< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
@ -201,7 +196,7 @@
|
||||
> \
|
||||
{ \
|
||||
typedef \
|
||||
BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename) \
|
||||
access::adt_attribute_access< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
@ -252,7 +247,8 @@
|
||||
, I \
|
||||
> \
|
||||
{ \
|
||||
typedef BOOST_PP_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), typename, ) \
|
||||
typedef BOOST_PP_EXPR_IF(BOOST_PP_SEQ_HEAD(TEMPLATE_PARAMS_SEQ), \
|
||||
typename) \
|
||||
adt_attribute_proxy< \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) \
|
||||
, I \
|
||||
|
@ -10,12 +10,15 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#include <boost/fusion/adapted/struct/detail/adapt_auto.hpp>
|
||||
#include <boost/fusion/adapted/adt/detail/adapt_base_attr_filler.hpp>
|
||||
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/mpl/aux_/preprocessor/token_equal.hpp>
|
||||
|
||||
#include <boost/preprocessor/config/config.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/facilities/is_empty.hpp>
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
@ -41,7 +44,7 @@
|
||||
BOOST_FUSION_ADAPT_ASSOC_ADT_FILLER_0
|
||||
|
||||
#define BOOST_FUSION_ADAPT_ASSOC_ADT_WRAP_ATTR(A, B, C, D, E) \
|
||||
BOOST_PP_IF(BOOST_PP_IS_EMPTY(A), \
|
||||
BOOST_PP_IIF(BOOST_MPL_PP_TOKEN_EQUAL(auto, A), \
|
||||
((3, (C,D,E))), \
|
||||
((5, (A,B,C,D,E))) \
|
||||
)
|
||||
@ -55,7 +58,7 @@
|
||||
#define BOOST_FUSION_ADAPT_ASSOC_ADT_WRAPPEDATTR_GET_KEY(ATTRIBUTE) \
|
||||
BOOST_PP_TUPLE_ELEM( \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), \
|
||||
BOOST_PP_SUB(BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE), 1), \
|
||||
BOOST_PP_DEC(BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE)), \
|
||||
BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR(ATTRIBUTE))
|
||||
|
||||
#endif
|
||||
|
@ -9,23 +9,21 @@
|
||||
#define BOOST_FUSION_ADAPTED_ADT_DETAIL_ADAPT_BASE_ATTR_FILLER_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#include <boost/fusion/adapted/struct/detail/adapt_auto.hpp>
|
||||
#include <boost/fusion/adapted/struct/detail/preprocessor/is_seq.hpp>
|
||||
|
||||
#include <boost/preprocessor/arithmetic/sub.hpp>
|
||||
#include <boost/preprocessor/control/if.hpp>
|
||||
#include <boost/preprocessor/logical/or.hpp>
|
||||
#include <boost/preprocessor/empty.hpp>
|
||||
#include <boost/preprocessor/tuple/size.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/facilities/is_empty.hpp>
|
||||
#include <boost/preprocessor/variadic/to_seq.hpp>
|
||||
#include <boost/preprocessor/variadic/to_tuple.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/preprocessor/seq/for_each.hpp>
|
||||
#include <boost/preprocessor/seq/push_front.hpp>
|
||||
#include <boost/preprocessor/seq/rest_n.hpp>
|
||||
#include <boost/mpl/aux_/preprocessor/token_equal.hpp>
|
||||
|
||||
#include <boost/preprocessor/tuple/reverse.hpp>
|
||||
#include <boost/preprocessor/arithmetic/dec.hpp>
|
||||
#include <boost/preprocessor/control/iif.hpp>
|
||||
#include <boost/preprocessor/logical/or.hpp>
|
||||
#include <boost/preprocessor/tuple/elem.hpp>
|
||||
#include <boost/preprocessor/variadic/to_seq.hpp>
|
||||
#include <boost/preprocessor/variadic/size.hpp>
|
||||
#include <boost/preprocessor/variadic/elem.hpp>
|
||||
#include <boost/preprocessor/seq/seq.hpp>
|
||||
#include <boost/preprocessor/seq/rest_n.hpp>
|
||||
|
||||
|
||||
#define BOOST_FUSION_ADAPT_ADT_WRAPPEDATTR_SIZE(ATTRIBUTE) \
|
||||
@ -47,11 +45,15 @@
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER_0_END
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER_1_END
|
||||
|
||||
// MSVC don't compile when using BOOST_PP_BITOR instead of BOOST_PP_OR.
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER(...) \
|
||||
BOOST_PP_IF( \
|
||||
BOOST_PP_IIF( \
|
||||
BOOST_PP_OR( \
|
||||
BOOST_PP_IS_EMPTY(BOOST_PP_VARIADIC_ELEM(0, __VA_ARGS__)), \
|
||||
BOOST_PP_IS_EMPTY(BOOST_PP_VARIADIC_ELEM(1, __VA_ARGS__))), \
|
||||
BOOST_MPL_PP_TOKEN_EQUAL(auto, \
|
||||
BOOST_PP_VARIADIC_ELEM(0, __VA_ARGS__)), \
|
||||
BOOST_MPL_PP_TOKEN_EQUAL(auto, \
|
||||
BOOST_PP_VARIADIC_ELEM(1, __VA_ARGS__))), \
|
||||
\
|
||||
BOOST_FUSION_ADAPT_ADT_WRAP_ATTR( \
|
||||
BOOST_PP_VARIADIC_ELEM(2, __VA_ARGS__), \
|
||||
BOOST_FUSION_WORKAROUND_VARIADIC_EMPTINESS_LAST_ELEM(__VA_ARGS__) \
|
||||
@ -63,7 +65,7 @@
|
||||
|
||||
# define BOOST_FUSION_WORKAROUND_VARIADIC_EMPTINESS_LAST_ELEM(...) \
|
||||
BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REST_N( \
|
||||
BOOST_PP_SUB(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__), 1), \
|
||||
BOOST_PP_DEC(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)), \
|
||||
BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)))
|
||||
|
||||
#else // BOOST_PP_VARIADICS
|
||||
@ -80,7 +82,7 @@
|
||||
# define BOOST_FUSION_ADAPT_ADT_FILLER_1_END
|
||||
|
||||
# define BOOST_FUSION_ADAPT_ADT_WRAP_ATTR(A, B, C, D) \
|
||||
BOOST_PP_IF(BOOST_PP_IS_EMPTY(A), \
|
||||
BOOST_PP_IIF(BOOST_MPL_PP_TOKEN_EQUAL(auto, A), \
|
||||
((2, (C,D))), \
|
||||
((4, (A,B,C,D))) \
|
||||
)
|
||||
|
@ -6,7 +6,7 @@
|
||||
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_ARRAY_27122005_1035)
|
||||
#ifndef BOOST_FUSION_ARRAY_27122005_1035
|
||||
#define BOOST_FUSION_ARRAY_27122005_1035
|
||||
|
||||
//For backwards compatibility
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_BOOST_ARRAY_27122005_1035)
|
||||
#ifndef BOOST_FUSION_BOOST_ARRAY_27122005_1035
|
||||
#define BOOST_FUSION_BOOST_ARRAY_27122005_1035
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_ARRAY_ITERATOR_26122005_2250)
|
||||
#ifndef BOOST_FUSION_ARRAY_ITERATOR_26122005_2250
|
||||
#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
@ -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
|
||||
{
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_AT_IMPL_27122005_1241)
|
||||
#ifndef BOOST_FUSION_AT_IMPL_27122005_1241
|
||||
#define BOOST_FUSION_AT_IMPL_27122005_1241
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_BEGIN_IMPL_27122005_1117)
|
||||
#ifndef BOOST_FUSION_BEGIN_IMPL_27122005_1117
|
||||
#define BOOST_FUSION_BEGIN_IMPL_27122005_1117
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044)
|
||||
#ifndef BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_END_IMPL_27122005_1120)
|
||||
#ifndef BOOST_FUSION_END_IMPL_27122005_1120
|
||||
#define BOOST_FUSION_END_IMPL_27122005_1120
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_SEQUENCE_IMPL_27122005_1648)
|
||||
#ifndef BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_VIEW_IMPL_27042006_2221)
|
||||
#ifndef BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_SIZE_IMPL_27122005_1251)
|
||||
#ifndef BOOST_FUSION_SIZE_IMPL_27122005_1251
|
||||
#define BOOST_FUSION_SIZE_IMPL_27122005_1251
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_VALUE_AT_IMPL_27122005_1256)
|
||||
#ifndef BOOST_FUSION_VALUE_AT_IMPL_27122005_1256
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_SEQUENCE_TAG_OF_27122005_1030)
|
||||
#ifndef FUSION_SEQUENCE_TAG_OF_27122005_1030
|
||||
#define FUSION_SEQUENCE_TAG_OF_27122005_1030
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_BOOST_TUPLE_09272006_0732)
|
||||
#ifndef BOOST_FUSION_BOOST_TUPLE_09272006_0732
|
||||
#define BOOST_FUSION_BOOST_TUPLE_09272006_0732
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_BOOST_TUPLE_ITERATOR_09262006_1851)
|
||||
#ifndef FUSION_BOOST_TUPLE_ITERATOR_09262006_1851
|
||||
#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
@ -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
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_AT_IMPL_09262006_1920)
|
||||
#ifndef BOOST_FUSION_AT_IMPL_09262006_1920
|
||||
#define BOOST_FUSION_AT_IMPL_09262006_1920
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_BEGIN_IMPL_09272006_0719)
|
||||
#ifndef BOOST_FUSION_BEGIN_IMPL_09272006_0719
|
||||
#define BOOST_FUSION_BEGIN_IMPL_09272006_0719
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_BUILD_CONS_10172012_0130)
|
||||
#ifndef BOOST_FUSION_BUILD_CONS_10172012_0130
|
||||
#define BOOST_FUSION_BUILD_CONS_10172012_0130
|
||||
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726)
|
||||
#ifndef BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
|
||||
|
||||
namespace boost { namespace fusion
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_CONVERT_IMPL_10172012_0120)
|
||||
#ifndef BOOST_FUSION_CONVERT_IMPL_10172012_0120
|
||||
#define BOOST_FUSION_CONVERT_IMPL_10172012_0120
|
||||
|
||||
#include <boost/tuple/tuple.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_END_IMPL_09272006_0721)
|
||||
#ifndef BOOST_FUSION_END_IMPL_09272006_0721
|
||||
#define BOOST_FUSION_END_IMPL_09272006_0721
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_IS_SEQUENCE_IMPL_09272006_0726)
|
||||
#ifndef BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_IS_VIEW_IMPL_09272006_0725)
|
||||
#ifndef BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_SIZE_IMPL_09272006_0724)
|
||||
#ifndef BOOST_FUSION_SIZE_IMPL_09272006_0724
|
||||
#define BOOST_FUSION_SIZE_IMPL_09272006_0724
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_VALUE_AT_IMPL_09262006_1926)
|
||||
#ifndef BOOST_FUSION_VALUE_AT_IMPL_09262006_1926
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_CLEAR_10172012_0100)
|
||||
#ifndef BOOST_FUSION_CLEAR_10172012_0100
|
||||
#define BOOST_FUSION_CLEAR_10172012_0100
|
||||
|
||||
#include <boost/mpl/identity.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_TAG_OF_09262006_1900)
|
||||
#ifndef BOOST_FUSION_TAG_OF_09262006_1900
|
||||
#define BOOST_FUSION_TAG_OF_09262006_1900
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_MPL_31122005_1152)
|
||||
#ifndef BOOST_FUSION_MPL_31122005_1152
|
||||
#define BOOST_FUSION_MPL_31122005_1152
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_AT_IMPL_31122005_1642)
|
||||
#ifndef BOOST_FUSION_AT_IMPL_31122005_1642
|
||||
#define BOOST_FUSION_AT_IMPL_31122005_1642
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_BEGIN_IMPL_31122005_1209)
|
||||
#ifndef BOOST_FUSION_BEGIN_IMPL_31122005_1209
|
||||
#define BOOST_FUSION_BEGIN_IMPL_31122005_1209
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
==============================================================================*/
|
||||
#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141)
|
||||
#ifndef BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
|
||||
#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_EMPTY_IMPL_31122005_1554)
|
||||
#ifndef BOOST_FUSION_EMPTY_IMPL_31122005_1554
|
||||
#define BOOST_FUSION_EMPTY_IMPL_31122005_1554
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_END_IMPL_31122005_1237)
|
||||
#ifndef BOOST_FUSION_END_IMPL_31122005_1237
|
||||
#define BOOST_FUSION_END_IMPL_31122005_1237
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_HAS_KEY_IMPL_31122005_1647)
|
||||
#ifndef BOOST_FUSION_HAS_KEY_IMPL_31122005_1647
|
||||
#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_SEQUENCE_IMPL_31122005_1505)
|
||||
#ifndef BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
|
||||
#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_IS_VIEW_IMPL_03202006_0048)
|
||||
#ifndef BOOST_FUSION_IS_VIEW_IMPL_03202006_0048
|
||||
#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_SIZE_IMPL_31122005_1508)
|
||||
#ifndef BOOST_FUSION_SIZE_IMPL_31122005_1508
|
||||
#define BOOST_FUSION_SIZE_IMPL_31122005_1508
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -5,7 +5,7 @@
|
||||
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_VALUE_AT_IMPL_31122005_1621)
|
||||
#ifndef BOOST_FUSION_VALUE_AT_IMPL_31122005_1621
|
||||
#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
@ -4,7 +4,7 @@
|
||||
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_MPL_ITERATOR_05052005_0731)
|
||||
#ifndef FUSION_MPL_ITERATOR_05052005_0731
|
||||
#define FUSION_MPL_ITERATOR_05052005_0731
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
23
include/boost/fusion/adapted/std_array.hpp
Normal file
23
include/boost/fusion/adapted/std_array.hpp
Normal file
@ -0,0 +1,23 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY__01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY__01062013_1700
|
||||
|
||||
#include <boost/fusion/adapted/std_array/std_array_iterator.hpp>
|
||||
#include <boost/fusion/adapted/std_array/tag_of.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/is_view_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/is_sequence_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/category_of_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/begin_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/end_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/size_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/at_impl.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/value_at_impl.hpp>
|
||||
|
||||
#endif
|
25
include/boost/fusion/adapted/std_array/detail/array_size.hpp
Normal file
25
include/boost/fusion/adapted/std_array/detail/array_size.hpp
Normal file
@ -0,0 +1,25 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_ARRAY_SIZE_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_ARRAY_SIZE_01062013_1700
|
||||
|
||||
#include <cstddef>
|
||||
#include <boost/type_traits/integral_constant.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace extension
|
||||
{
|
||||
template<class T>
|
||||
struct std_array_size;
|
||||
|
||||
template<template<typename, std::size_t> class Array, typename T, std::size_t N>
|
||||
struct std_array_size<Array<T, N> > : boost::integral_constant<std::size_t, N> {};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
45
include/boost/fusion/adapted/std_array/detail/at_impl.hpp
Normal file
45
include/boost/fusion/adapted/std_array/detail/at_impl.hpp
Normal file
@ -0,0 +1,45 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_AT_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_AT_IMPL_01062013_1700
|
||||
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
|
||||
#include <boost/mpl/if.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename T>
|
||||
struct at_impl;
|
||||
|
||||
template<>
|
||||
struct at_impl<std_array_tag>
|
||||
{
|
||||
template<typename Sequence, typename N>
|
||||
struct apply
|
||||
{
|
||||
typedef typename mpl::if_<
|
||||
is_const<Sequence>,
|
||||
typename Sequence::const_reference,
|
||||
typename Sequence::reference>::type type;
|
||||
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
return seq[N::value];
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
41
include/boost/fusion/adapted/std_array/detail/begin_impl.hpp
Normal file
41
include/boost/fusion/adapted/std_array/detail/begin_impl.hpp
Normal file
@ -0,0 +1,41 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_BEGIN_OF_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_BEGIN_OF_IMPL_01062013_1700
|
||||
|
||||
#include <boost/fusion/adapted/std_array/std_array_iterator.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename T>
|
||||
struct begin_impl;
|
||||
|
||||
template <>
|
||||
struct begin_impl<std_array_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
{
|
||||
typedef std_array_iterator<Sequence, 0> type;
|
||||
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
return type(v);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -0,0 +1,35 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_CATEGORY_OF_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_CATEGORY_OF_IMPL_01062013_1700
|
||||
|
||||
#include <boost/config/no_tr1/utility.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
struct random_access_traversal_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename T>
|
||||
struct category_of_impl;
|
||||
|
||||
template<>
|
||||
struct category_of_impl<std_array_tag>
|
||||
{
|
||||
template<typename T>
|
||||
struct apply
|
||||
{
|
||||
typedef random_access_traversal_tag type;
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
45
include/boost/fusion/adapted/std_array/detail/end_impl.hpp
Normal file
45
include/boost/fusion/adapted/std_array/detail/end_impl.hpp
Normal file
@ -0,0 +1,45 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_END_OF_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_END_OF_IMPL_01062013_1700
|
||||
|
||||
#include <boost/fusion/adapted/std_array/std_array_iterator.hpp>
|
||||
#include <boost/fusion/adapted/std_array/detail/array_size.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
struct end_impl;
|
||||
|
||||
template <>
|
||||
struct end_impl<std_array_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
{
|
||||
typedef typename remove_const<Sequence>::type seq_type;
|
||||
static int const size = std_array_size<seq_type>::value;
|
||||
typedef std_array_iterator<Sequence, size> type;
|
||||
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
return type(v);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -0,0 +1,32 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_IS_SEQUENCE_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_IS_SEQUENCE_IMPL_01062013_1700
|
||||
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename Tag>
|
||||
struct is_sequence_impl;
|
||||
|
||||
template<>
|
||||
struct is_sequence_impl<std_array_tag>
|
||||
{
|
||||
template<typename Sequence>
|
||||
struct apply : mpl::true_ {};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -0,0 +1,33 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_IS_VIEW_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_IS_VIEW_IMPL_01062013_1700
|
||||
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename Tag>
|
||||
struct is_view_impl;
|
||||
|
||||
template<>
|
||||
struct is_view_impl<std_array_tag>
|
||||
{
|
||||
template<typename T>
|
||||
struct apply : mpl::false_
|
||||
{};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
41
include/boost/fusion/adapted/std_array/detail/size_impl.hpp
Normal file
41
include/boost/fusion/adapted/std_array/detail/size_impl.hpp
Normal file
@ -0,0 +1,41 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_SIZE_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_SIZE_IMPL_01062013_1700
|
||||
|
||||
#include <boost/fusion/adapted/std_array/detail/array_size.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename T>
|
||||
struct size_impl;
|
||||
|
||||
template<>
|
||||
struct size_impl<std_array_tag>
|
||||
{
|
||||
template<typename Sequence>
|
||||
struct apply
|
||||
: mpl::int_
|
||||
<
|
||||
std_array_size
|
||||
<
|
||||
typename remove_const<Sequence>::type
|
||||
>::value
|
||||
>
|
||||
{};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
@ -0,0 +1,32 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_VALUE_AT_IMPL_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_VALUE_AT_IMPL_01062013_1700
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
struct std_array_tag;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template<typename T>
|
||||
struct value_at_impl;
|
||||
|
||||
template <>
|
||||
struct value_at_impl<std_array_tag>
|
||||
{
|
||||
template <typename Sequence, typename N>
|
||||
struct apply
|
||||
{
|
||||
typedef typename Sequence::value_type type;
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
114
include/boost/fusion/adapted/std_array/std_array_iterator.hpp
Normal file
114
include/boost/fusion/adapted/std_array/std_array_iterator.hpp
Normal file
@ -0,0 +1,114 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2013 Mateusz Loskot
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_ARRAY_ITERATOR_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_ARRAY_ITERATOR_01062013_1700
|
||||
|
||||
#include <cstddef>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
#include <boost/mpl/assert.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/mpl/minus.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#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;
|
||||
|
||||
template <typename Array, int Pos>
|
||||
struct std_array_iterator
|
||||
: iterator_facade<std_array_iterator<Array, Pos>, random_access_traversal_tag>
|
||||
{
|
||||
BOOST_MPL_ASSERT_RELATION(Pos, >=, 0);
|
||||
BOOST_MPL_ASSERT_RELATION(Pos, <=, std::tuple_size<Array>::value);
|
||||
|
||||
typedef mpl::int_<Pos> index;
|
||||
typedef Array array_type;
|
||||
|
||||
std_array_iterator(Array& a)
|
||||
: array(a) {}
|
||||
|
||||
Array& array;
|
||||
|
||||
template <typename Iterator>
|
||||
struct value_of
|
||||
{
|
||||
typedef typename Iterator::array_type array_type;
|
||||
typedef typename array_type::value_type type;
|
||||
};
|
||||
|
||||
template <typename Iterator>
|
||||
struct deref
|
||||
{
|
||||
typedef typename Iterator::array_type array_type;
|
||||
typedef typename
|
||||
mpl::if_<
|
||||
is_const<array_type>
|
||||
, typename array_type::const_reference
|
||||
, typename array_type::reference
|
||||
>::type
|
||||
type;
|
||||
|
||||
static type
|
||||
call(Iterator const & it)
|
||||
{
|
||||
return it.array[Iterator::index::value];
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Iterator, typename N>
|
||||
struct advance
|
||||
{
|
||||
typedef typename Iterator::index index;
|
||||
typedef typename Iterator::array_type array_type;
|
||||
typedef std_array_iterator<array_type, index::value + N::value> type;
|
||||
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
return type(i.array);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename Iterator>
|
||||
struct next : advance<Iterator, mpl::int_<1> > {};
|
||||
|
||||
template <typename Iterator>
|
||||
struct prior : advance<Iterator, mpl::int_<-1> > {};
|
||||
|
||||
template <typename I1, typename I2>
|
||||
struct distance : mpl::minus<typename I2::index, typename I1::index>
|
||||
{
|
||||
typedef typename
|
||||
mpl::minus<
|
||||
typename I2::index, typename I1::index
|
||||
>::type
|
||||
type;
|
||||
|
||||
static type
|
||||
call(I1 const&, I2 const&)
|
||||
{
|
||||
return type();
|
||||
}
|
||||
};
|
||||
};
|
||||
}}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif
|
52
include/boost/fusion/adapted/std_array/tag_of.hpp
Normal file
52
include/boost/fusion/adapted/std_array/tag_of.hpp
Normal file
@ -0,0 +1,52 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2005-2006 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)
|
||||
==============================================================================*/
|
||||
#ifndef BOOST_FUSION_STD_ARRAY_TAG_OF_01062013_1700
|
||||
#define BOOST_FUSION_STD_ARRAY_TAG_OF_01062013_1700
|
||||
|
||||
#include <boost/fusion/support/tag_of_fwd.hpp>
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct std_array_tag;
|
||||
struct fusion_sequence_tag;
|
||||
|
||||
namespace traits
|
||||
{
|
||||
template<typename T, std::size_t N>
|
||||
#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
|
||||
struct tag_of<std::array<T,N>, void >
|
||||
#else
|
||||
struct tag_of<std::array<T,N> >
|
||||
#endif
|
||||
{
|
||||
typedef std_array_tag type;
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
namespace boost { namespace mpl
|
||||
{
|
||||
template<typename>
|
||||
struct sequence_tag;
|
||||
|
||||
template<typename T, std::size_t N>
|
||||
struct sequence_tag<std::array<T,N> >
|
||||
{
|
||||
typedef fusion::fusion_sequence_tag type;
|
||||
};
|
||||
|
||||
template<typename T, std::size_t N>
|
||||
struct sequence_tag<std::array<T,N> const>
|
||||
{
|
||||
typedef fusion::fusion_sequence_tag type;
|
||||
};
|
||||
}}
|
||||
|
||||
#endif
|
@ -4,7 +4,7 @@
|
||||
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_BOOST_TUPLE_09242011_1744)
|
||||
#ifndef BOOST_FUSION_BOOST_TUPLE_09242011_1744
|
||||
#define BOOST_FUSION_BOOST_TUPLE_09242011_1744
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user