Compare commits
590 Commits
fusion_ada
...
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 | |||
639cf2459d | |||
1ba1ac3ec8 | |||
0bbea1ea32 | |||
b56eb59595 | |||
01a2d6557e | |||
91cac41ada | |||
67f0863cdd | |||
2204f025d3 | |||
e881ea67cb | |||
84789ec1c3 | |||
8c72a0012f | |||
4b5eb0cde8 | |||
d8bca006ff | |||
0954000314 | |||
2b072973e0 | |||
2c5b52f3bd | |||
f45c94fa43 | |||
2114bfca6c | |||
3e66a56b9f | |||
d03f79b6fd | |||
52eb8768f2 | |||
197792ac53 | |||
06428298bb | |||
960ccf5d2c | |||
bd4b1cdac6 | |||
e23d153734 | |||
92726da079 | |||
505d41ea67 | |||
02d15bfcb4 | |||
fb0f22a296 | |||
c5c0147d7d | |||
6ab68a29d8 | |||
aa1448b77a | |||
b60219eb8a | |||
e4d43b00c1 | |||
995202044c | |||
b3c560d3b6 | |||
3955f76511 | |||
5e4978b870 | |||
326104a9b7 | |||
ce8bf1079a | |||
28598a7919 | |||
0360dc44b2 | |||
fbd6a8a50f | |||
e572c382f7 | |||
205c0f1eb4 | |||
d7c918e36f | |||
f872d1326a | |||
54dedc5e98 | |||
85ce2a3eb2 | |||
a2269f447e | |||
51d638f51c | |||
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
@ -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
@ -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
@ -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
@ -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
@ -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 ;
|
||||
|
107
doc/adapted.qbk
@ -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
|
||||
@ -89,6 +76,35 @@ __std_pair_doc__, __tr1_tuple_pair__
|
||||
|
||||
[endsect]
|
||||
|
||||
[section std::tuple]
|
||||
|
||||
This module provides adapters for `std::tuple`. Including the module header
|
||||
makes `std::tuple` a fully conforming __random_access_sequence__.
|
||||
|
||||
[important To be fully conforming, compiler should support C++11 Variadic Templates.]
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/adapted/std_tuple.hpp>
|
||||
#include <boost/fusion/include/std_tuple.hpp>
|
||||
|
||||
[heading Model of]
|
||||
|
||||
* __random_access_sequence__
|
||||
|
||||
[heading Example]
|
||||
|
||||
std::tuple<int, std::string, float> p(123, "Hola!!!", 456.f);
|
||||
std::cout << __at_c__<0>(p) << std::endl;
|
||||
std::cout << __at_c__<1>(p) << std::endl;
|
||||
std::cout << p << std::endl;
|
||||
|
||||
[heading See also]
|
||||
|
||||
__std_tuple_doc__
|
||||
|
||||
[endsect]
|
||||
|
||||
[section mpl sequence]
|
||||
|
||||
This module provides adapters for __mpl__ sequences. Including the module
|
||||
@ -116,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__
|
||||
@ -168,8 +199,8 @@ header makes `boost::tuple` a fully conforming __forward_sequence__.
|
||||
[heading Example]
|
||||
|
||||
boost::tuple<int,std::string> example_tuple(101, "hello");
|
||||
std::cout << *boost::fusion::begin(example_tuple) << '\n';
|
||||
std::cout << *boost::fusion::next(boost::fusion::begin(example_tuple)) << '\n';
|
||||
std::cout << *__begin__(example_tuple) << '\n';
|
||||
std::cout << *__next__(__begin__(example_tuple)) << '\n';
|
||||
|
||||
[heading See also]
|
||||
|
||||
@ -198,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)
|
||||
...
|
||||
)
|
||||
|
||||
@ -211,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
|
||||
@ -241,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]
|
||||
@ -269,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),
|
||||
...
|
||||
)
|
||||
|
||||
@ -287,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
|
||||
@ -316,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(
|
||||
@ -361,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),
|
||||
...
|
||||
)
|
||||
|
||||
@ -371,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),
|
||||
...
|
||||
)
|
||||
|
||||
@ -393,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
|
||||
@ -424,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]
|
||||
|
||||
@ -452,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
|
||||
@ -490,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]
|
||||
|
||||
@ -525,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
|
||||
@ -612,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
|
||||
@ -649,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]
|
||||
|
||||
@ -684,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
|
||||
@ -794,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
|
||||
@ -899,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
|
||||
@ -1015,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]]
|
||||
@ -441,10 +457,10 @@ Linear, exactly `__result_of_size__<Sequence>::value` applications of `F`.
|
||||
[endsect]
|
||||
|
||||
[section for_each]
|
||||
A metafunction returning the result type of applying __for_each__ to a sequence. The
|
||||
return type of __for_each__ is always `void`.
|
||||
|
||||
[heading Description]
|
||||
A metafunction returning the result type of applying __for_each__ to a sequence. The
|
||||
return type of __for_each__ is always `void`.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
@ -724,8 +740,10 @@ or `__end__(seq)` if there is no such element.
|
||||
[heading Complexity]
|
||||
Linear. At most `__result_of_size__<Sequence>::value` comparisons.
|
||||
|
||||
#include <boost/fusion/algorithm/query/find_if.hpp>
|
||||
#include <boost/fusion/include/find_if.hpp>
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/algorithm/query/find_if.hpp>
|
||||
#include <boost/fusion/include/find_if.hpp>
|
||||
|
||||
[heading Example]
|
||||
const __vector__<double,int> vec(1.0,2);
|
||||
@ -1361,7 +1379,7 @@ Returns a new sequence, with all the elements of the original sequence, except t
|
||||
typename T,
|
||||
typename Sequence
|
||||
>
|
||||
typename __result_of_remove__<Sequence const, T>::type replace(Sequence const& seq);
|
||||
typename __result_of_remove__<Sequence const, T>::type remove(Sequence const& seq);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
@ -1720,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]]
|
||||
@ -1765,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
|
||||
@ -1830,7 +1848,7 @@ Constant. Returns a view which is lazily evaluated.
|
||||
#include <boost/fusion/include/pop_back.hpp>
|
||||
|
||||
[heading Example]
|
||||
assert(___pop_back__(__make_vector__(1,2,3)) == __make_vector__(1,2));
|
||||
assert(__pop_back__(__make_vector__(1,2,3)) == __make_vector__(1,2));
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -1884,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
|
||||
@ -1925,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
|
||||
@ -2089,32 +2107,33 @@ Constant.
|
||||
[section transform]
|
||||
|
||||
[heading Description]
|
||||
For a sequence `seq` and function object or function pointer `f`, `transform` returns a new sequence
|
||||
with elements created by applying `f(e)` to each element of `e` of `seq`.
|
||||
Returns the result type of __transform__, given the types of the input sequence and unary __poly_func_obj__.
|
||||
|
||||
[heading Unary version synopsis]
|
||||
template<
|
||||
typename Sequence,
|
||||
typename F
|
||||
>
|
||||
typename __result_of_transform__<Sequence const, F>::type transform(
|
||||
Sequence const& seq, F f);
|
||||
struct transform
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
};
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`seq`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`f`][`f(e)` is a valid expression for each element `e` of `seq`. `__boost_result_of_call__<F(E)>::type` is the return type of `f` when called with a value of each element type `E`.][Transformation function]]
|
||||
[[`Sequence`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`F`][A model of unary __poly_func_obj__][Transformation metafunction]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
__transform__(seq, f);
|
||||
__result_of_transform__<Sequence, F>::type
|
||||
|
||||
[*Return type]:
|
||||
|
||||
* A model of __forward_sequence__
|
||||
* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model.
|
||||
|
||||
[*Semantics]: Returns a new sequence, containing the return values of `f(e)` for each element `e` within `seq`.
|
||||
[*Semantics]: Returns a sequence that contains the types of `__result_of__<F(E)>::type` for each element `E` within `Sequence`.
|
||||
|
||||
[heading Binary version synopsis]
|
||||
template<
|
||||
@ -2122,41 +2141,33 @@ with elements created by applying `f(e)` to each element of `e` of `seq`.
|
||||
typename Sequence2,
|
||||
typename F
|
||||
>
|
||||
typename __result_of_transform__<Sequence1 const, Sequence2 const, F>::type transform(
|
||||
Sequence1 const& seq1, Sequence2 const& seq2, F f);
|
||||
struct transform
|
||||
{
|
||||
typedef __unspecified__ type;
|
||||
};
|
||||
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`seq1`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`seq2`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`f`][`f(e1,e2)` is a valid expression for each pair of elements `e1` of `seq1` and `e2` of `seq2`. `__boost_result_of_call__<F(E1,E2)>::type` is the return type of `f` when called with elements of type `E1` and `E2`][Transformation function]]
|
||||
[[`Sequence1`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`Sequence2`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`F`][A model of binary __poly_func_obj__][Transformation metafunction]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
__result_of_transform__<Sequence1, Sequence2, F>::type
|
||||
|
||||
[*Return type]: A model of __forward_sequence__.
|
||||
|
||||
[*Semantics]: Returns a new sequence, containing the return values of `f(e1, e2)` for each pair of elements `e1` and `e2` within `seq1` and `seq2` respectively.
|
||||
[*Semantics]: Returns a sequence, that contains the types of `__result_of__<F(E1, E2)>::type` for each pair of elements `E1` and `E2` within `Sequence1` and `Sequence2` respectively.
|
||||
|
||||
[heading Complexity]
|
||||
Constant. Returns a view which is lazily evaluated.
|
||||
Constant.
|
||||
|
||||
[heading Header]
|
||||
|
||||
#include <boost/fusion/algorithm/transformation/transform.hpp>
|
||||
#include <boost/fusion/include/transform.hpp>
|
||||
|
||||
[heading Example]
|
||||
struct triple
|
||||
{
|
||||
typedef int result_type;
|
||||
|
||||
int operator()(int t) const
|
||||
{
|
||||
return t * 3;
|
||||
};
|
||||
};
|
||||
...
|
||||
assert(__transform__(__make_vector__(1,2,3), triple()) == __make_vector__(3,6,9));
|
||||
|
||||
[endsect]
|
||||
|
||||
[section replace]
|
||||
@ -2200,7 +2211,7 @@ Constant.
|
||||
[section replace_if]
|
||||
|
||||
[heading Description]
|
||||
Returns the result type of __replace_if__, given the types of the sequence, __poly_func_obj__ predicate and replacement object.
|
||||
Returns the result type of __replace_if__, given the types of the sequence, unary __mpl_lambda_expression__ predicate and replacement object.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
@ -2215,7 +2226,7 @@ Returns the result type of __replace_if__, given the types of the sequence, __po
|
||||
[table Parameters
|
||||
[[Parameter][Requirement][Description]]
|
||||
[[`Sequence`][A model of __forward_sequence__][Operation's argument]]
|
||||
[[`F`][A model of unary __poly_func_obj__][Replacement predicate]]
|
||||
[[`F`][A model of unary __mpl_lambda_expression__][Replacement predicate]]
|
||||
[[`T`][Any type][The type of the replacement object]]
|
||||
]
|
||||
|
||||
@ -2265,7 +2276,7 @@ Returns the result type of __remove__, given the sequence and removal types.
|
||||
* A model of __forward_sequence__.
|
||||
* A model of __associative_sequence__ if `Sequence` implements the __associative_sequence__ model.
|
||||
|
||||
[*Semantics]: Returns a sequence containing the elements of `Sequence` not of type `T`. Equivalent to `__result_of_replace_if__<Sequence, boost::is_same<mpl::_, T> >::type`.
|
||||
[*Semantics]: Returns a sequence containing the elements of `Sequence` not of type `T`. Equivalent to `__result_of_remove_if__<Sequence, boost::is_same<mpl::_, T> >::type`.
|
||||
|
||||
[heading Complexity]
|
||||
Constant.
|
||||
|
@ -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>
|
||||
|
||||
@ -191,7 +198,7 @@ defined in __forward_sequence__.
|
||||
[[`__at__<N>(l)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
]
|
||||
|
||||
[blurb __note__ `__at__<N>(l)` is provided for convenience and compatibility
|
||||
[note `__at__<N>(l)` is provided for convenience and compatibility
|
||||
with the original __tuple__ library, despite `cons` being a
|
||||
__forward_sequence__ only (`at` is supposed to be a
|
||||
__random_access_sequence__ requirement). The runtime complexity of __at__ is
|
||||
@ -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>
|
||||
|
||||
@ -276,7 +285,7 @@ defined in __forward_sequence__.
|
||||
[[`__at__<N>(l)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
]
|
||||
|
||||
[blurb __note__ `__at__<n>(l)` is provided for convenience and compatibility
|
||||
[note `__at__<n>(l)` is provided for convenience and compatibility
|
||||
with the original __tuple__ library, despite `list` being a
|
||||
__forward_sequence__ only (__at__ is supposed to be a
|
||||
__random_access_sequence__ requirement). The runtime complexity of __at__ is
|
||||
@ -309,7 +318,7 @@ __front_extended_deque__ and __back_extended_deque__.
|
||||
|
||||
#include <boost/fusion/container/deque.hpp>
|
||||
#include <boost/fusion/include/deque.hpp>
|
||||
#include <boost/fusion/container/list/deque_fwd.hpp>
|
||||
#include <boost/fusion/container/deque/deque_fwd.hpp>
|
||||
#include <boost/fusion/include/deque_fwd.hpp>
|
||||
|
||||
[heading Synopsis]
|
||||
@ -363,7 +372,7 @@ defined in __bidirectional_sequence__.
|
||||
[[`__at__<N>(d)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
]
|
||||
|
||||
[blurb __note__ `__at__<N>(d)` is provided for convenience, despite
|
||||
[note `__at__<N>(d)` is provided for convenience, despite
|
||||
`deque` being a __bidirectional_sequence__ only (`at` is supposed to be
|
||||
a __random_access_sequence__ requirement). The runtime complexity of
|
||||
__at__ is constant (see __recursive_inline__). `deque` element access
|
||||
@ -406,7 +415,7 @@ the same properties as the __deque__.
|
||||
[[`T`] [Element type] [ ]]
|
||||
]
|
||||
|
||||
[blurb __note__ `Deque` can be a __deque__, a __front_extended_deque__ or a
|
||||
[note `Deque` can be a __deque__, a __front_extended_deque__ or a
|
||||
__back_extended_deque__]
|
||||
|
||||
[heading Model of]
|
||||
@ -430,7 +439,7 @@ not defined in __bidirectional_sequence__.
|
||||
[[`__at__<N>(d)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
]
|
||||
|
||||
[blurb __note__ See __deque__ for further details.]
|
||||
[note See __deque__ for further details.]
|
||||
|
||||
[heading Example]
|
||||
|
||||
@ -467,7 +476,7 @@ the same properties as the __deque__.
|
||||
[[`T`] [Element type] [ ]]
|
||||
]
|
||||
|
||||
[blurb __note__ `Deque` can be a __deque__, a __back_extended_deque__ or a
|
||||
[note `Deque` can be a __deque__, a __back_extended_deque__ or a
|
||||
__back_extended_deque__]
|
||||
|
||||
[heading Model of]
|
||||
@ -491,7 +500,7 @@ not defined in __bidirectional_sequence__.
|
||||
[[`__at__<N>(d)`] [The Nth element from the beginning of the sequence; see __at__.]]
|
||||
]
|
||||
|
||||
[blurb __note__ See __deque__ for further details.]
|
||||
[note See __deque__ for further details.]
|
||||
|
||||
[heading Example]
|
||||
|
||||
@ -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
|
||||
|
||||
@ -730,7 +746,7 @@ before including any Fusion header to change the default. Example:
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__
|
||||
__note_ref_wrappers__
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -778,7 +794,7 @@ __result_of_make_cons__`<Car>::type`
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__
|
||||
__note_ref_wrappers__
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -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
|
||||
|
||||
@ -828,7 +846,7 @@ default. Example:
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__
|
||||
__note_ref_wrappers__
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -880,7 +898,7 @@ Fusion header to change the default. Example:
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__
|
||||
__note_ref_wrappers__
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -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
|
||||
|
||||
@ -932,7 +952,7 @@ default. Example:
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__
|
||||
__note_ref_wrappers__
|
||||
|
||||
[endsect]
|
||||
|
||||
@ -990,14 +1010,14 @@ default. Example:
|
||||
|
||||
[heading See also]
|
||||
|
||||
__note_boost_ref__, __fusion_pair__
|
||||
__note_ref_wrappers__, __fusion_pair__
|
||||
|
||||
[endsect]
|
||||
|
||||
[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
|
||||
|
||||
@ -1949,7 +1991,7 @@ Convert a fusion sequence to a __map__.
|
||||
|
||||
[*Semantics]: Convert a fusion sequence, `seq`, to a __map__.
|
||||
|
||||
[*Precondition]: The elements of the sequence are assumed to be
|
||||
[*Precondition]: For non-associative sequence, the elements are assumed to be
|
||||
__fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
||||
|
||||
[heading Header]
|
||||
@ -1959,10 +2001,26 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
||||
|
||||
[heading Example]
|
||||
|
||||
// from sequence of __fusion_pair__
|
||||
as_map(__make_vector__(
|
||||
__fusion_make_pair__<int>('X')
|
||||
, __fusion_make_pair__<double>("Men")))
|
||||
|
||||
// from associative sequence
|
||||
namespace ns
|
||||
{
|
||||
struct x_member;
|
||||
struct y_member;
|
||||
}
|
||||
BOOST_FUSION_DEFINE_ASSOC_STRUCT(
|
||||
(ns),
|
||||
point,
|
||||
(int, x, ns::x_member)
|
||||
(int, y, ns::y_member)
|
||||
)
|
||||
...
|
||||
as_map(ns::point(123, 456))
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
@ -2150,7 +2208,7 @@ Returns the result type of __as_map__.
|
||||
|
||||
[*Semantics]: Convert a fusion sequence, `Sequence`, to a __map__.
|
||||
|
||||
[*Precondition]: The elements of the sequence are assumed to be
|
||||
[*Precondition]: For non-associative sequence, the elements are assumed to be
|
||||
__fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
||||
|
||||
[heading Header]
|
||||
@ -2160,10 +2218,26 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
||||
|
||||
[heading Example]
|
||||
|
||||
// from sequence of __fusion_pair__
|
||||
result_of::as_map<__vector__<
|
||||
__fusion_pair__<int, char>
|
||||
, __fusion_pair__<double, std::string> > >::type
|
||||
|
||||
// from associative sequence
|
||||
namespace ns
|
||||
{
|
||||
struct x_member;
|
||||
struct y_member;
|
||||
}
|
||||
BOOST_FUSION_DEFINE_ASSOC_STRUCT(
|
||||
(ns),
|
||||
point,
|
||||
(int, x, ns::x_member)
|
||||
(int, y, ns::y_member)
|
||||
)
|
||||
...
|
||||
result_of::as_map<ns::point>::type // __map__<__fusion_pair__<ns::x_member, int>, __fusion_pair__<ns::y_member, int> >
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
@ -323,7 +323,7 @@ For our __random_access_sequence__ we will also need to implement `size_impl`,
|
||||
In order for `example_struct` to serve as an associative forward sequence,
|
||||
we need to adapt the traversal category of our sequence and our iterator
|
||||
accordingly and enable 3 intrinsic sequence lookup features, __at_key__,
|
||||
__value_at_key__ and __has_key__. We also need to enable 3 iterator lookup
|
||||
__result_of_value_at_key__ and __has_key__. We also need to enable 3 iterator lookup
|
||||
features, __result_of_key_of__, __result_of_value_of_data__ and __deref_data__.
|
||||
|
||||
To implement `at_key_impl` we need to associate the `fields::name` and `fields::age`
|
||||
@ -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]
|
||||
@ -931,11 +931,11 @@ reference. Const qualification is preserved and propagated appropriately
|
||||
the target function object is const - or, in case the target function object
|
||||
is held by value, the adapter is const).
|
||||
|
||||
[blurb __note__ For Microsoft Visual C++ 7.1 (Visual Studio 2003) the detection
|
||||
[note For Microsoft Visual C++ 7.1 (Visual Studio 2003) the detection
|
||||
of the Function Object's const qualification easily causes an internal error.
|
||||
Therefore the adapter is always treated as if it was const. ]
|
||||
|
||||
[blurb __tip__ If the type sequence passed to this template contains
|
||||
[tip If the type sequence passed to this template contains
|
||||
non-reference elements, the element is copied only once - the call operator's
|
||||
signature is optimized automatically to avoid by-value parameters.]
|
||||
|
||||
|
@ -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,43 +21,37 @@
|
||||
]
|
||||
]
|
||||
|
||||
[def __note__ [$images/note.png]]
|
||||
[def __alert__ [$images/alert.png]]
|
||||
[def __tip__ [$images/tip.png]]
|
||||
[def __caution__ [$images/caution.png]]
|
||||
|
||||
[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 __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 __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://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]]
|
||||
@ -83,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`]]
|
||||
@ -112,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`]]
|
||||
@ -133,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`]]
|
||||
@ -321,17 +319,17 @@
|
||||
[def __result_of_invoke__ [link fusion.functional.invocation.metafunctions.invoke `result_of::invoke`]]
|
||||
[def __result_of_invoke_procedure__ [link fusion.functional.invocation.metafunctions.invoke_proc `result_of::invoke_procedure`]]
|
||||
[def __result_of_invoke_function_object__ [link fusion.functional.invocation.metafunctions.invoke_fobj `result_of::invoke_function_object`]]
|
||||
[def __result_of_make_fused__ [link fusion.functional.generation.metafunctions.mk_fused `make_fused`]]
|
||||
[def __result_of_make_fused_procedure__ [link fusion.functional.generation.metafunctions.mk_fused_proc `make_fused_procedure`]]
|
||||
[def __result_of_make_fused_function_object__ [link fusion.functional.generation.metafunctions.mk_fused_fobj `make_fused_function_object`]]
|
||||
[def __result_of_make_unfused__ [link fusion.functional.generation.metafunctions.mk_unfused `make_unfused`]]
|
||||
[def __result_of_make_fused__ [link fusion.functional.generation.metafunctions.mk_fused `result_of::make_fused`]]
|
||||
[def __result_of_make_fused_procedure__ [link fusion.functional.generation.metafunctions.mk_fused_proc `result_of::make_fused_procedure`]]
|
||||
[def __result_of_make_fused_function_object__ [link fusion.functional.generation.metafunctions.mk_fused_fobj `result_of::make_fused_function_object`]]
|
||||
[def __result_of_make_unfused__ [link fusion.functional.generation.metafunctions.mk_unfused `result_of::make_unfused`]]
|
||||
|
||||
[def __recursive_inline__ [link fusion.notes.recursive_inlined_functions Recursive Inlined Functions]]
|
||||
[def __overloaded_functions__ [link fusion.notes.overloaded_functions Overloaded Functions]]
|
||||
[def __tag_dispatching__ [link fusion.notes.tag_dispatching /tag dispatching/]]
|
||||
[def __element_conversion__ [link fusion.notes.element_conversion /element conversion/]]
|
||||
[def __see_element_conversion__ [link fusion.notes.element_conversion /see element conversion/]]
|
||||
[def __note_boost_ref__ [link fusion.notes.boost__ref `boost::ref`]]
|
||||
[def __note_ref_wrappers__ [link fusion.notes.reference_wrappers `Reference Wrappers`]]
|
||||
|
||||
[def __quick_start__ [link fusion.quick_start Quick Start]]
|
||||
[def __organization__ [link fusion.organization Organization]]
|
||||
@ -341,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]
|
||||
|
Before Width: | Height: | Size: 603 B |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 722 B |
Before Width: | Height: | Size: 336 B |
Before Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 334 B |
Before Width: | Height: | Size: 867 B |
Before Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 1.2 KiB |
@ -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>
|
||||
@ -167,6 +172,7 @@
|
||||
<dd><dl>
|
||||
<dt><span class="section"><a href="fusion/adapted/array.html">Array</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/std__pair.html">std::pair</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/std__tuple.html">std::tuple</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/mpl_sequence.html">mpl sequence</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/boost__array.html">boost::array</a></span></dt>
|
||||
<dt><span class="section"><a href="fusion/adapted/boost__tuple.html">boost::tuple</a></span></dt>
|
||||
@ -273,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>
|
||||
|
@ -67,8 +67,7 @@ the following expressions are valid:
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
[
|
||||
table
|
||||
[table
|
||||
[[Expression] [Semantics]]
|
||||
[[`__next__(i)`] [An iterator to the element following `i`]]
|
||||
[[`i == j`] [Iterator equality comparison]]
|
||||
@ -255,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]
|
||||
|
||||
@ -418,15 +424,15 @@ Moves an iterator by a specified distance.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename I,
|
||||
typename M
|
||||
typename M,
|
||||
typename I
|
||||
>
|
||||
typename __result_of_advance__<I, M>::type advance(I const& i);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
[[`i`] [Model of __forward_iterator__] [Iterator to move relative to]]
|
||||
[[`N`] [An __mpl_integral_constant__] [Number of positions to move]]
|
||||
[[`M`] [An __mpl_integral_constant__] [Number of positions to move]]
|
||||
]
|
||||
|
||||
[heading Expression Semantics]
|
||||
@ -455,8 +461,8 @@ Moves an iterator by a specified distance.
|
||||
|
||||
[heading Synopsis]
|
||||
template<
|
||||
typename I,
|
||||
int N
|
||||
int N,
|
||||
typename I
|
||||
>
|
||||
typename __result_of_advance_c__<I, N>::type advance_c(I const& i);
|
||||
|
||||
@ -537,7 +543,7 @@ Dereferences an iterator.
|
||||
template<
|
||||
typename I
|
||||
>
|
||||
typename __result_of_deref__<I>::type operator*(__unspecified__<I> const& i);
|
||||
typename __result_of_deref__<I>::type operator*(I const& i);
|
||||
|
||||
[table Parameters
|
||||
[[Parameter] [Requirement] [Description]]
|
||||
|
@ -100,7 +100,7 @@ Array arguments are deduced to reference to const types. For example
|
||||
[footnote Note that the type of a string literal is an array of const
|
||||
characters, not `const char*`. To get __make_list__ to create a __list__
|
||||
with an element of a non-const array type one must use the `ref` wrapper
|
||||
(see __note_boost_ref__).]:
|
||||
(see __note_ref_wrappers__).]:
|
||||
|
||||
__make_list__("Donald", "Daisy")
|
||||
|
||||
@ -121,7 +121,7 @@ creates a __list__ of type
|
||||
|
||||
__list__<void (*)(int)>
|
||||
|
||||
[heading boost::ref]
|
||||
[heading Reference Wrappers]
|
||||
|
||||
Fusion's generation functions (e.g. __make_list__) by default stores the
|
||||
element types as plain non-reference types. Example:
|
||||
@ -151,6 +151,8 @@ For example:
|
||||
|
||||
See __boost_ref__ for details.
|
||||
|
||||
Since C++11, the standard reference wrappers (`std::ref` and `std::cref`) work as well.
|
||||
|
||||
[heading adt_attribute_proxy]
|
||||
|
||||
To adapt arbitrary data types that do not allow direct access to their members,
|
||||
|
@ -36,24 +36,31 @@ link against.
|
||||
|
||||
* tuple
|
||||
* algorithm
|
||||
* auxiliary
|
||||
* iteration
|
||||
* query
|
||||
* transformation
|
||||
* adapted
|
||||
* adt
|
||||
* array
|
||||
* mpl
|
||||
* boost::array
|
||||
* boost::tuple
|
||||
* mpl
|
||||
* std_pair
|
||||
* std_tuple
|
||||
* struct
|
||||
* variant
|
||||
* view
|
||||
* filter_view
|
||||
* flatten_view
|
||||
* iterator_range
|
||||
* joint_view
|
||||
* nview
|
||||
* repetitive_view
|
||||
* reverse_view
|
||||
* single_view
|
||||
* transform_view
|
||||
* zip_view
|
||||
* identity_view
|
||||
* container
|
||||
* deque
|
||||
* list
|
||||
@ -63,6 +70,9 @@ link against.
|
||||
* generation
|
||||
* mpl
|
||||
* functional
|
||||
* adapter
|
||||
* generation
|
||||
* invocation
|
||||
* sequence
|
||||
* comparison
|
||||
* intrinsic
|
||||
|
@ -49,16 +49,11 @@ and traversal routines. It was an instant /AHA!/ moment.
|
||||
Some icons are used to mark certain topics indicative of their relevance.
|
||||
These icons precede some text to indicate:
|
||||
|
||||
[table Icons
|
||||
[[Icon] [Name] [Meaning]]
|
||||
[[__note__] [Note] [Information provided is auxiliary but will
|
||||
give the reader a deeper insight into a specific
|
||||
topic. May be skipped.]]
|
||||
[[__alert__] [Alert] [Information provided is of utmost importance.]]
|
||||
[[__caution__] [Caution] [A mild warning.]]
|
||||
[[__tip__] [Tip] [A potentially useful and helpful piece of
|
||||
information.]]
|
||||
]
|
||||
[note Information provided is auxiliary but will give the reader a deeper
|
||||
insight into a specific topic. May be skipped.]
|
||||
[important Information provided is of utmost importance.]
|
||||
[caution A mild warning.]
|
||||
[tip A potentially useful and helpful piece of information.]
|
||||
|
||||
This documentation is automatically generated by Boost QuickBook documentation
|
||||
tool. QuickBook can be found in the __boost_tools__.
|
||||
@ -66,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]
|
||||
|
||||
|
121
doc/sequence.qbk
@ -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]]
|
||||
]
|
||||
|
||||
@ -249,15 +254,18 @@ any Random Access Sequence the following must be met:
|
||||
[[Expression] [Compile Time Complexity]]
|
||||
[[`__result_of_begin__<S>::type`] [Amortized constant time]]
|
||||
[[`__result_of_end__<S>::type`] [Amortized constant time]]
|
||||
[[`__result_of_at__<S, N>::type`] [Amortized constant time]]
|
||||
[[`__result_of_value_at__<S, N>::type`] [Amortized constant time]]
|
||||
[[`__result_of_at__<S, M>::type`] [Amortized constant time]]
|
||||
[[`__result_of_at_c__<S, N>::type`] [Amortized constant time]]
|
||||
[[`__result_of_value_at__<S, M>::type`] [Amortized constant time]]
|
||||
[[`__result_of_value_at_c__<S, N>::type`] [Amortized constant time]]
|
||||
]
|
||||
|
||||
[blurb __note__ `__result_of_at__<S, N>` returns the actual type returned by
|
||||
`__at__<N>(s)`. In most cases, this is a reference. Hence, there is no way to
|
||||
know the exact element type using `__result_of_at__<S, N>`.The element at `N`
|
||||
[note `__result_of_at__<S, M>` returns the actual type returned by
|
||||
`__at__<M>(s)`. In most cases, this is a reference. Hence, there is no way to
|
||||
know the exact element type using `__result_of_at__<S, M>`.The element at `M`
|
||||
may actually be a reference to begin with. For this purpose, you can use
|
||||
`__result_of_value_at__<S, N>`.]
|
||||
`__result_of_value_at__<S, M>` (Note that, `__result_of_value_at_c__<S, N>`
|
||||
is a counterpart of `__result_of_at_c__<S, N>` as well).]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
||||
@ -313,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]]
|
||||
]
|
||||
|
||||
@ -327,11 +334,11 @@ For any Associative Sequence the following expressions must be valid:
|
||||
[[`__result_of_value_at_key__<S, K>::type`] [Amortized constant time]]
|
||||
]
|
||||
|
||||
[blurb __note__ `__result_of_at_key__<S, K>` returns the actual type returned
|
||||
[note `__result_of_at_key__<S, K>` returns the actual type returned
|
||||
by `__at_key__<K>(s)`. In most cases, this is a reference. Hence, there is no
|
||||
way to know the exact element type using `__result_of_at_key__<S, K>`.The
|
||||
element at `K` may actually be a reference to begin with. For this purpose,
|
||||
you can use `__result_of_value_at_key__<S, N>`.]
|
||||
you can use `__result_of_value_at_key__<S, K>`.]
|
||||
|
||||
[heading Expression Semantics]
|
||||
|
||||
@ -353,6 +360,56 @@ you can use `__result_of_value_at_key__<S, N>`.]
|
||||
* __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]
|
||||
|
||||
@ -657,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]
|
||||
@ -683,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
|
||||
|
||||
@ -736,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
|
||||
|
||||
@ -830,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.
|
||||
|
||||
@ -1146,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]
|
||||
@ -1188,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]
|
||||
@ -1323,7 +1384,7 @@ Returns the result type of __has_key__.
|
||||
[heading Description]
|
||||
|
||||
Returns the result type of __at_key__[footnote __result_of_at_key__
|
||||
reflects the actual return type of the function __at_key__. __sequence__s
|
||||
reflects the actual return type of the function __at_key__. __sequence__(s)
|
||||
typically return references to its elements via the __at_key__ function. If
|
||||
you want to get the actual element type, use __result_of_value_at_key__].
|
||||
|
||||
@ -1347,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]
|
||||
@ -1385,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`.
|
||||
|
||||
@ -1445,7 +1510,7 @@ operators for free.
|
||||
|
||||
The I/O operators: `<<` and `>>` work generically on all Fusion
|
||||
sequences. The I/O operators are overloaded in namespace `boost::fusion`
|
||||
[footnote __sequences__ and __views__ residing in different namespaces
|
||||
[footnote __sequence__(s) and __views__ residing in different namespaces
|
||||
will have to either provide their own I/O operators (possibly forwarding
|
||||
to fusion's I/O operators) or hoist fusion's I/O operators (using
|
||||
declaration), in their own namespaces for proper argument dependent
|
||||
@ -1457,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:
|
||||
|
||||
@ -1637,7 +1712,7 @@ compile time error.
|
||||
[*Semantics]:
|
||||
|
||||
For each element, `e1`, in sequence `a`, and for each element, `e2`, in
|
||||
sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__s,
|
||||
sequence `b`, `e1 == e2` returns true. For any 2 zero length __sequence__(s),
|
||||
e and f, e == f returns true.
|
||||
|
||||
[heading Header]
|
||||
|
@ -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
|
||||
@ -254,7 +256,8 @@ Metafunction to apply __element_conversion__ to the full argument type.
|
||||
|
||||
It removes references to `const`, references to array types are kept, even
|
||||
if the array is `const`. Reference wrappers are removed (see
|
||||
__note_boost_ref__).
|
||||
__note_ref_wrappers__)[footnote Since C++11, the standard reference wrappers
|
||||
are also removed.].
|
||||
|
||||
[heading Header]
|
||||
|
||||
|
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,19 +111,19 @@
|
||||
BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE)( \
|
||||
NAME_SEQ, \
|
||||
ATTRIBUTE, \
|
||||
ATTRIBUTE_TUPEL_SIZE, \
|
||||
ATTRIBUTE_TUPLE_SIZE, \
|
||||
PREFIX, \
|
||||
TEMPLATE_PARAMS_SEQ) \
|
||||
\
|
||||
template<class Val> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||
static void \
|
||||
boost_fusion_adapt_adt_impl_set( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& obj, \
|
||||
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,13 +155,13 @@
|
||||
> \
|
||||
{ \
|
||||
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 \
|
||||
>::const_type type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
adt_attribute_proxy( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ) const& o) \
|
||||
@ -201,13 +196,13 @@
|
||||
> \
|
||||
{ \
|
||||
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 \
|
||||
>::type type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||
explicit \
|
||||
adt_attribute_proxy( \
|
||||
BOOST_FUSION_ADAPT_STRUCT_UNPACK_NAME(NAME_SEQ)& o) \
|
||||
@ -215,7 +210,7 @@
|
||||
{} \
|
||||
\
|
||||
template<class Val> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||
adt_attribute_proxy& \
|
||||
operator=(Val const& val) \
|
||||
{ \
|
||||
@ -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 \
|
||||
@ -281,7 +277,7 @@
|
||||
> \
|
||||
type; \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||
static type \
|
||||
call(Seq& obj) \
|
||||
{ \
|
||||
|
@ -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))) \
|
||||
)
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
template <typename T, typename Dummy>
|
||||
@ -25,12 +25,12 @@ namespace boost { namespace fusion
|
||||
: remove_const<typename remove_reference<T>::type>
|
||||
{};
|
||||
}
|
||||
|
||||
|
||||
namespace extension
|
||||
{
|
||||
// Overload as_const() to unwrap adt_attribute_proxy.
|
||||
template <typename T, int N, bool Const>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
typename adt_attribute_proxy<T, N, Const>::type as_const(const adt_attribute_proxy<T, N, Const>& proxy)
|
||||
{
|
||||
return proxy.get();
|
||||
|
@ -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
|
||||
|
@ -27,7 +27,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
add_reference<typename remove_extent<Seq>::type>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -29,7 +29,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(It const& it)
|
||||
{
|
||||
|
@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace extension
|
||||
>
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Seq& seq)
|
||||
{
|
||||
|
@ -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;
|
||||
@ -32,7 +37,7 @@ namespace boost { namespace fusion
|
||||
typedef mpl::int_<Pos> index;
|
||||
typedef Array array_type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
array_iterator(Array& a)
|
||||
: array(a) {}
|
||||
|
||||
@ -57,7 +62,7 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const & it)
|
||||
{
|
||||
@ -72,7 +77,7 @@ namespace boost { namespace fusion
|
||||
typedef typename Iterator::array_type array_type;
|
||||
typedef array_iterator<array_type, index::value + N::value> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
@ -95,18 +100,27 @@ namespace boost { namespace fusion
|
||||
>::type
|
||||
type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(I1 const&, I2 const&)
|
||||
{
|
||||
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
|
||||
{
|
||||
template <typename Array, int Pos>
|
||||
struct iterator_traits< ::boost::fusion::array_iterator<Array, Pos> >
|
||||
{ };
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -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>
|
||||
@ -14,7 +14,7 @@
|
||||
#include <boost/mpl/if.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
|
||||
struct boost_array_tag;
|
||||
|
||||
namespace extension
|
||||
@ -33,7 +33,7 @@ namespace boost { namespace fusion {
|
||||
typename Sequence::const_reference,
|
||||
typename Sequence::reference>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& seq)
|
||||
{
|
||||
|
@ -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>
|
||||
@ -24,11 +24,11 @@ namespace boost { namespace fusion {
|
||||
struct begin_impl<boost_array_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
struct apply
|
||||
{
|
||||
typedef array_iterator<Sequence, 0> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -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>
|
||||
@ -24,11 +24,11 @@ namespace boost { namespace fusion {
|
||||
struct end_impl<boost_array_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply
|
||||
struct apply
|
||||
{
|
||||
typedef array_iterator<Sequence, Sequence::static_size> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Sequence& v)
|
||||
{
|
||||
|
@ -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
|
||||
@ -207,6 +210,15 @@ namespace boost { namespace fusion
|
||||
};
|
||||
}}
|
||||
|
||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||
namespace std
|
||||
{
|
||||
template <typename Cons>
|
||||
struct iterator_traits< ::boost::fusion::boost_tuple_iterator<Cons> >
|
||||
{ };
|
||||
}
|
||||
#endif
|
||||
|
||||
#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_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>
|
||||
|