Compare commits

...

31 Commits

Author SHA1 Message Date
4bc9de322c Update BOOST_TEST_LINK_LIBRARIES 2023-10-11 20:56:58 +03:00
ff9a75ffdf Update dependency list in cmake_subdir_test 2023-10-11 20:29:58 +03:00
412d9fab18 Regenerate CMakeLists.txt 2023-10-11 20:23:59 +03:00
d15dba11ca Use <type_traits> in decltype.hpp 2023-10-11 20:23:12 +03:00
9fbea065a4 Use <type_traits> in msvc/typeof_impl.hpp 2023-10-11 20:20:56 +03:00
2873e76139 Update registration headers 2023-10-11 20:16:38 +03:00
22be4cc612 Regenerate CMakeLists.txt 2023-10-11 20:10:45 +03:00
68552c321c Update meta/libraries.json 2023-10-11 20:10:07 +03:00
75e4c2f77e Remove tools/preprocess.pl 2023-10-11 20:08:56 +03:00
19a9a7e02f Remove obsolete header files 2023-10-11 20:08:17 +03:00
3280983db7 Remove C++03 from ci.yml 2023-10-11 19:55:55 +03:00
3b3f2e084b Require decltype in typeof.hpp, except for msvc-14.0 2023-10-11 19:49:59 +03:00
0fe3f42df7 Fix cmake_subdir_test and cmake_install_test 2023-10-11 19:29:37 +03:00
4f4104aaf0 Regenerate CMakeLists.txt 2023-10-11 19:24:15 +03:00
084619b424 Add CMake tests 2023-10-11 19:23:32 +03:00
4e4c584ec6 Update ci.yml 2023-10-11 19:08:03 +03:00
8c654f75a3 Update C++03 deprecation message 2023-06-03 02:31:59 +03:00
27a4d8b09e Trigger CI 2023-03-06 09:51:25 +02:00
4631690cf6 Merge pull request #20 from eldiener/develop
[skip ci] Add "cxxstd" json field
2023-03-06 06:24:40 +02:00
4a827b0cda Add C++03 deprecation notice 2023-03-06 05:56:22 +02:00
83756139b2 C++20 removes std::raw_storage_iterator, unary_negate, binary_negate 2023-03-06 04:51:04 +02:00
465b49c825 Add .github/workflows/ci.yml 2023-03-06 04:17:25 +02:00
46c7a05f82 Update CMakeLists.txt 2021-06-10 00:47:04 +03:00
f304c9ec72 [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-21 16:27:00 -05:00
da6801c691 Merge pull request #18 from eldiener/develop
Changes for Embarcadero C++ clang-based compilers, targeting Boost 1.74. Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost conf…
2020-08-24 14:15:39 +03:00
d30c81ab01 Update .travis.yml 2020-08-24 13:41:27 +03:00
0ebcad0700 Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-28 12:23:23 -04:00
27890f7ec1 Merge pull request #17 from Kojoley/missing-cstddef-include
Missing `cstddef` include
2020-03-27 14:50:36 -04:00
a660ddd9fd Missing cstddef include 2020-03-20 19:03:48 +03:00
067ad10264 Merge pull request #15 from Mike-Devel/min_cmake
Add minimal cmake file
2018-12-30 13:25:40 -05:00
f7ceda084a [CMake] Generate cmake target that other libraries can use
... to express their dependency on this library and retrieve
any configuration information such as the include directory
and transitive dependencies.
2018-12-30 15:57:56 +01:00
61 changed files with 826 additions and 3863 deletions

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

@ -0,0 +1,600 @@
name: CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- toolset: gcc-4.8
cxxstd: "11"
os: ubuntu-latest
container: ubuntu:18.04
install: g++-4.8
- toolset: gcc-5
cxxstd: "11,14,1z"
os: ubuntu-latest
container: ubuntu:18.04
install: g++-5
- toolset: gcc-6
cxxstd: "11,14,1z"
os: ubuntu-latest
container: ubuntu:18.04
install: g++-6
- toolset: gcc-7
cxxstd: "11,14,17"
os: ubuntu-20.04
install: g++-7
- toolset: gcc-8
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: g++-8
- toolset: gcc-9
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
- toolset: gcc-10
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: g++-10
- toolset: gcc-11
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: g++-11
- toolset: gcc-12
cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04
install: g++-12
- toolset: gcc-13
cxxstd: "11,14,17,20,2b"
os: ubuntu-latest
container: ubuntu:23.04
install: g++-13
- toolset: clang
compiler: clang++-3.9
cxxstd: "11,14"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-3.9
- toolset: clang
compiler: clang++-4.0
cxxstd: "11,14"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-4.0
- toolset: clang
compiler: clang++-5.0
cxxstd: "11,14,1z"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-5.0
- toolset: clang
compiler: clang++-6.0
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-6.0
- toolset: clang
compiler: clang++-7
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-7
- toolset: clang
compiler: clang++-8
cxxstd: "11,14,17"
os: ubuntu-20.04
install: clang-8
- toolset: clang
compiler: clang++-9
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-9
- toolset: clang
compiler: clang++-10
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-10
- toolset: clang
compiler: clang++-11
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-11
- toolset: clang
compiler: clang++-12
cxxstd: "11,14,17,2a"
os: ubuntu-20.04
install: clang-12
- toolset: clang
compiler: clang++-13
cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04
install: clang-13
- toolset: clang
compiler: clang++-14
cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04
install: clang-14
- toolset: clang
compiler: clang++-15
cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04
install: clang-15
- toolset: clang
compiler: clang++-16
cxxstd: "11,14,17,20,2b"
os: ubuntu-latest
container: ubuntu:23.04
install: clang-16
- toolset: clang
cxxstd: "11,14,17,2a"
os: macos-11
- toolset: clang
cxxstd: "11,14,17,20,2b"
os: macos-12
- toolset: clang
cxxstd: "11,14,17,20,2b"
os: macos-13
runs-on: ${{matrix.os}}
container: ${{matrix.container}}
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v3
- name: Setup container environment
if: matrix.container
run: |
apt-get update
apt-get -y install sudo python3 git g++
- name: Install packages
if: matrix.install
run: |
sudo apt-get update
sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
./bootstrap.sh
./b2 -d0 headers
- name: Create user-config.jam
if: matrix.compiler
run: |
echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
windows:
strategy:
fail-fast: false
matrix:
include:
- toolset: msvc-14.0
cxxstd: "14,latest"
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.2
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.3
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2022
- toolset: clang-win
cxxstd: "14,17,latest"
addrmd: 32,64
os: windows-2022
- toolset: gcc
cxxstd: "11,14,17,2a"
addrmd: 64
os: windows-2019
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
cmd /c bootstrap
b2 -d0 headers
- name: Run tests
shell: cmd
run: |
cd ../boost-root
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release embed-manifest-via=linker
posix-cmake-subdir:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-11
- os: macos-12
- os: macos-13
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Use library with add_subdirectory
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake ..
cmake --build .
ctest --output-on-failure --no-tests=error
posix-cmake-install:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-11
- os: macos-12
- os: macos-13
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local ..
- name: Install
run: |
cd ../boost-root/__build__
cmake --build . --target install
- name: Use the installed library
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build .
ctest --output-on-failure --no-tests=error
posix-cmake-test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
- os: ubuntu-22.04
- os: macos-11
- os: macos-12
- os: macos-13
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON ..
- name: Build tests
run: |
cd ../boost-root/__build__
cmake --build . --target tests
- name: Run tests
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error
windows-cmake-subdir:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2019
- os: windows-2022
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Use library with add_subdirectory (Debug)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake ..
cmake --build . --config Debug
ctest --output-on-failure --no-tests=error -C Debug
- name: Use library with add_subdirectory (Release)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test/__build__
cmake --build . --config Release
ctest --output-on-failure --no-tests=error -C Release
windows-cmake-install:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2019
- os: windows-2022
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Configure
shell: cmd
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
- name: Install (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target install --config Debug
- name: Install (Release)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target install --config Release
- name: Use the installed library (Debug)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
cmake --build . --config Debug
ctest --output-on-failure --no-tests=error -C Debug
- name: Use the installed library (Release)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test/__build__
cmake --build . --config Release
ctest --output-on-failure --no-tests=error -C Release
windows-cmake-test:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2019
- os: windows-2022
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Configure
shell: cmd
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DBUILD_TESTING=ON ..
- name: Build tests (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target tests --config Debug
- name: Run tests (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error -C Debug
- name: Build tests (Release)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target tests --config Release
- name: Run tests (Release)
shell: cmd
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error -C Release

View File

@ -4,16 +4,14 @@
language: cpp
sudo: false
python: "2.7"
branches:
only:
- master
- develop
- /feature\/.*/
dist: xenial
env:
matrix:
- BOGUS_JOB=true
@ -78,7 +76,6 @@ matrix:
- ubuntu-toolchain-r-test
- os: linux
dist: trusty
compiler: g++-7
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
addons:
@ -99,10 +96,8 @@ matrix:
apt:
packages:
- clang-3.5
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
- os: linux
compiler: clang++-3.6
@ -113,7 +108,6 @@ matrix:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux
compiler: clang++-3.7
@ -124,7 +118,6 @@ matrix:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux
compiler: clang++-3.8
@ -133,10 +126,8 @@ matrix:
apt:
packages:
- clang-3.8
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
compiler: clang++-3.9
@ -145,10 +136,8 @@ matrix:
apt:
packages:
- clang-3.9
- libstdc++-4.9-dev
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: linux
compiler: clang++-4.0
@ -159,7 +148,6 @@ matrix:
- clang-4.0
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-4.0
- os: linux
compiler: clang++-5.0
@ -170,7 +158,6 @@ matrix:
- clang-5.0
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-trusty-5.0
- os: osx
compiler: clang++

26
CMakeLists.txt Normal file
View File

@ -0,0 +1,26 @@
# Generated by `boostdep --cmake typeof`
# Copyright 2020, 2021 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt
cmake_minimum_required(VERSION 3.8...3.20)
project(boost_typeof VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_typeof INTERFACE)
add_library(Boost::typeof ALIAS boost_typeof)
target_include_directories(boost_typeof INTERFACE include)
target_link_libraries(boost_typeof
INTERFACE
Boost::config
)
target_compile_features(boost_typeof INTERFACE cxx_std_11)
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
add_subdirectory(test)
endif()

View File

@ -6,12 +6,11 @@
#ifndef BOOST_TYPEOF_DECLTYPE_HPP_INCLUDED
# define BOOST_TYPEOF_DECLTYPE_HPP_INCLUDED
#include <boost/type_traits/remove_cv.hpp>
#include <boost/type_traits/remove_reference.hpp>
#include <type_traits>
namespace boost { namespace type_of {
template<typename T>
using remove_cv_ref_t = typename remove_cv<typename remove_reference<T>::type>::type;
using remove_cv_ref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
}}
#define BOOST_TYPEOF(expr) boost::type_of::remove_cv_ref_t<decltype(expr)>

View File

@ -1,100 +0,0 @@
// Copyright (C) 2007 Peder Holt
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
# define BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED
# include <boost/config.hpp>
# include <boost/config/workaround.hpp>
# include <boost/typeof/constant.hpp>
namespace boost
{
namespace type_of
{
template<int N> struct encode_counter : encode_counter<N - 1> {};
template<> struct encode_counter<0> {};
char (*encode_index(...))[1];
# define BOOST_TYPEOF_INDEX(T) (sizeof(*boost::type_of::encode_index((boost::type_of::encode_counter<1000>*)0)))
# define BOOST_TYPEOF_NEXT_INDEX(next) friend char (*encode_index(encode_counter<next>*))[next];
//Typeof code
template<typename ID>
struct msvc_extract_type
{
struct id2type;
};
template<typename T, typename ID>
struct msvc_register_type : msvc_extract_type<ID>
{
typedef msvc_extract_type<ID> base_type;
struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature, also works for Digital Mars
{
typedef T type;
};
};
template<int ID>
struct msvc_typeid_wrapper {
typedef typename msvc_extract_type<constant<int,ID> >::id2type id2type;
typedef typename id2type::type type;
};
//Tie it all together
template<typename T>
struct encode_type
{
//Get the next available compile time constants index
BOOST_STATIC_CONSTANT(unsigned,value=BOOST_TYPEOF_INDEX(T));
//Instantiate the template
typedef typename msvc_register_type<T,constant<int,value> >::id2type type;
//Set the next compile time constants index
BOOST_STATIC_CONSTANT(unsigned,next=value+1);
//Increment the compile time constant (only needed when extensions are not active
BOOST_TYPEOF_NEXT_INDEX(next);
};
template<class T>
struct sizer
{
typedef char(*type)[encode_type<T>::value];
};
template<typename T>
typename sizer<T>::type encode_start(T const&);
template<typename Organizer, typename T>
msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
# define BOOST_TYPEOF(expr) \
boost::type_of::msvc_typeid_wrapper<sizeof(*boost::type_of::encode_start(expr))>::type
# define BOOST_TYPEOF_TPL(expr) typename BOOST_TYPEOF(expr)
# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
struct name {\
BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
typedef typename boost::type_of::msvc_extract_type<name>::id2type id2type;\
typedef typename id2type::type type;\
};
# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
struct name {\
BOOST_STATIC_CONSTANT(int,_typeof_register_value=sizeof(boost::type_of::typeof_register_type<name>(expr)));\
typedef boost::type_of::msvc_extract_type<name>::id2type id2type;\
typedef id2type::type type;\
};
}
}
#endif//BOOST_TYPEOF_MSVC_TYPEOF_IMPL_HPP_INCLUDED

View File

@ -1,58 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// 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)
// boostinspect:nounnamed
#ifndef BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
#define BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
#ifndef BOOST_TYPEOF_SUPPRESS_UNNAMED_NAMESPACE
# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace { namespace boost_typeof {
# define BOOST_TYPEOF_END_ENCODE_NS }}
# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost_typeof
#else
# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace boost { namespace type_of {
# define BOOST_TYPEOF_END_ENCODE_NS }}
# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost::type_of
# define BOOST_TYPEOF_TEXT "unnamed namespace is off"
# include <boost/typeof/message.hpp>
#endif
BOOST_TYPEOF_BEGIN_ENCODE_NS
template<class V, class Type_Not_Registered_With_Typeof_System>
struct encode_type_impl;
template<class T, class Iter>
struct decode_type_impl
{
typedef int type; // MSVC ETI workaround
};
template<class T>
struct decode_nested_template_helper_impl;
BOOST_TYPEOF_END_ENCODE_NS
namespace boost { namespace type_of {
template<class V, class T>
struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl<V, T>
{};
template<class Iter>
struct decode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_type_impl<
typename Iter::type,
typename Iter::next
>
{};
}}
#endif//BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED

View File

@ -1,34 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
#define BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
// Assumes iter0 contains initial iterator
#define BOOST_TYPEOF_DECODE_PARAM(z, n, text) \
typedef boost::type_of::decode_type<iter##n> decode##n; \
typedef typename decode##n::type p##n; \
typedef typename decode##n::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
#define BOOST_TYPEOF_DECODE_PARAMS(n)\
BOOST_PP_REPEAT(n, BOOST_TYPEOF_DECODE_PARAM, ~)
// The P0, P1, ... PN are encoded and added to V
#define BOOST_TYPEOF_ENCODE_PARAMS_BEGIN(z, n, text)\
typename boost::type_of::encode_type<
#define BOOST_TYPEOF_ENCODE_PARAMS_END(z, n, text)\
, BOOST_PP_CAT(P, n)>::type
#define BOOST_TYPEOF_ENCODE_PARAMS(n, ID) \
BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_BEGIN, ~) \
typename boost::type_of::push_back<V, boost::type_of::constant<std::size_t,ID> >::type \
BOOST_PP_REPEAT(n, BOOST_TYPEOF_ENCODE_PARAMS_END, ~)
#endif//BOOST_TYPEOF_ENCODE_DECODE_PARAMS_HPP_INCLUDED

View File

@ -2,13 +2,4 @@
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
// Inclusion of this file increments BOOST_TYPEOF_REGISTRATION_GROUP
// This method was suggested by Paul Mensonides
#ifdef BOOST_TYPEOF_EMULATION
# undef BOOST_TYPEOF_REGISTRATION_GROUP
# include <boost/preprocessor/slot/counter.hpp>
# include BOOST_PP_UPDATE_COUNTER()
# define BOOST_TYPEOF_REGISTRATION_GROUP BOOST_PP_COUNTER
#endif
// This header is no longer useful and is only retained for compatibility

View File

@ -1,117 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
#define BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED
#include <boost/config.hpp>
#include <boost/typeof/constant.hpp>
namespace boost { namespace type_of {
template<class T> struct get_unsigned
{
typedef T type;
};
template<> struct get_unsigned<signed char>
{
typedef unsigned char type;
};
template<> struct get_unsigned<char>
{
typedef unsigned char type;
};
template<> struct get_unsigned<short>
{
typedef unsigned short type;
};
template<> struct get_unsigned<int>
{
typedef unsigned int type;
};
template<> struct get_unsigned<long>
{
typedef unsigned long type;
};
//////////////////////////
template<std::size_t n, bool Overflow>
struct pack
{
BOOST_STATIC_CONSTANT(std::size_t , value=((n + 1) * 2 + (Overflow ? 1 : 0)));
};
template<std::size_t m>
struct unpack
{
BOOST_STATIC_CONSTANT(std::size_t, value = (m / 2) - 1);
BOOST_STATIC_CONSTANT(std::size_t, overflow = (m % 2 == 1));
};
////////////////////////////////
template<class V, std::size_t n, bool overflow = (n >= 0x3fffffff)>
struct encode_size_t : push_back<
V,
boost::type_of::constant<std::size_t,pack<n, false>::value>
>
{};
template<class V, std::size_t n>
struct encode_size_t<V, n, true> : push_back<typename push_back<
V,
boost::type_of::constant<std::size_t,pack<n % 0x3ffffffe, true>::value> >::type,
boost::type_of::constant<std::size_t,n / 0x3ffffffe>
>
{};
template<class V, class T, T n>
struct encode_integral : encode_size_t< V, (typename get_unsigned<T>::type)n,(((typename get_unsigned<T>::type)n)>=0x3fffffff) >
{};
template<class V, bool b>
struct encode_integral<V, bool, b> : encode_size_t< V, b?1:0, false>
{};
///////////////////////////
template<std::size_t n, class Iter, bool overflow>
struct decode_size_t;
template<std::size_t n, class Iter>
struct decode_size_t<n, Iter, false>
{
BOOST_STATIC_CONSTANT(std::size_t,value = n);
typedef Iter iter;
};
template<std::size_t n, class Iter>
struct decode_size_t<n, Iter, true>
{
BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
BOOST_STATIC_CONSTANT(std::size_t,value = (std::size_t)m * 0x3ffffffe + n);
typedef typename Iter::next iter;
};
template<class T, class Iter>
struct decode_integral
{
typedef decode_integral<T,Iter> self_t;
BOOST_STATIC_CONSTANT(std::size_t,m = Iter::type::value);
BOOST_STATIC_CONSTANT(std::size_t,n = unpack<m>::value);
BOOST_STATIC_CONSTANT(std::size_t,overflow = unpack<m>::overflow);
typedef typename Iter::next nextpos;
static const T value = (T)(std::size_t)decode_size_t<n, nextpos, overflow>::value;
typedef typename decode_size_t<self_t::n, nextpos, self_t::overflow>::iter iter;
};
}}//namespace
#endif//BOOST_TYPEOF_INT_ENCODING_HPP_INCLUDED

View File

@ -1,80 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
#define BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED
#define BOOST_TYPEOF_unsigned (unsigned)
#define BOOST_TYPEOF_signed (signed)
#define char_BOOST_TYPEOF (char)
#define short_BOOST_TYPEOF (short)
#define int_BOOST_TYPEOF (int)
#define long_BOOST_TYPEOF (long)
#define BOOST_TYPEOF_char_BOOST_TYPEOF (char)
#define BOOST_TYPEOF_short_BOOST_TYPEOF (short)
#define BOOST_TYPEOF_int_BOOST_TYPEOF (int)
#define BOOST_TYPEOF_long_BOOST_TYPEOF (long)
#define BOOST_TYPEOF_bool_BOOST_TYPEOF (bool)
#define BOOST_TYPEOF_unsigned_BOOST_TYPEOF (unsigned)
#define BOOST_TYPEOF_size_t_BOOST_TYPEOF (size_t)
#define BOOST_TYPEOF_MAKE_OBJ_char BOOST_TYPEOF_INTEGRAL_PARAM(char)
#define BOOST_TYPEOF_MAKE_OBJ_short BOOST_TYPEOF_INTEGRAL_PARAM(short)
#define BOOST_TYPEOF_MAKE_OBJ_int BOOST_TYPEOF_INTEGRAL_PARAM(int)
#define BOOST_TYPEOF_MAKE_OBJ_long BOOST_TYPEOF_INTEGRAL_PARAM(long)
#define BOOST_TYPEOF_MAKE_OBJ_bool BOOST_TYPEOF_INTEGRAL_PARAM(bool)
#define BOOST_TYPEOF_MAKE_OBJ_unsigned BOOST_TYPEOF_INTEGRAL_PARAM(unsigned)
#define BOOST_TYPEOF_MAKE_OBJ_size_t BOOST_TYPEOF_INTEGRAL_PARAM(size_t)
#define BOOST_TYPEOF_MAKE_OBJ_unsignedchar BOOST_TYPEOF_INTEGRAL_PARAM(unsigned char)
#define BOOST_TYPEOF_MAKE_OBJ_unsignedshort BOOST_TYPEOF_INTEGRAL_PARAM(unsigned short)
#define BOOST_TYPEOF_MAKE_OBJ_unsignedint BOOST_TYPEOF_INTEGRAL_PARAM(unsigned int)
#define BOOST_TYPEOF_MAKE_OBJ_unsignedlong BOOST_TYPEOF_INTEGRAL_PARAM(unsigned long)
#define BOOST_TYPEOF_MAKE_OBJ_signedchar BOOST_TYPEOF_INTEGRAL_PARAM(signed char)
#define BOOST_TYPEOF_MAKE_OBJ_signedshort BOOST_TYPEOF_INTEGRAL_PARAM(signed short)
#define BOOST_TYPEOF_MAKE_OBJ_signedint BOOST_TYPEOF_INTEGRAL_PARAM(signed int)
#define BOOST_TYPEOF_MAKE_OBJ_signedlong BOOST_TYPEOF_INTEGRAL_PARAM(signed long)
#define BOOST_TYPEOF_MAKE_OBJ_integral(x) BOOST_TYPEOF_INTEGRAL_PARAM(x)
#define BOOST_TYPEOF_INTEGRAL(X) integral(X) BOOST_TYPEOF_EAT
#define BOOST_TYPEOF_EAT_BOOST_TYPEOF
#define BOOST_TYPEOF_integral(X) (integral(X))
#define BOOST_TYPEOF_INTEGRAL_PARAM(Type)\
(INTEGRAL_PARAM)\
(Type)
#define BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)\
BOOST_PP_SEQ_ELEM(1, Param)
#define BOOST_TYPEOF_INTEGRAL_PARAM_EXPANDTYPE(Param)\
BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
// INTEGRAL_PARAM "virtual functions" implementation
#define BOOST_TYPEOF_INTEGRAL_PARAM_ENCODE(This, n)\
typedef typename boost::type_of::encode_integral<\
BOOST_PP_CAT(V, n),\
BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This),\
BOOST_PP_CAT(P, n)\
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
#define BOOST_TYPEOF_INTEGRAL_PARAM_DECODE(This, n)\
typedef boost::type_of::decode_integral<BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This), BOOST_PP_CAT(iter, n)> BOOST_PP_CAT(d, n);\
static const BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(This) BOOST_PP_CAT(P, n) = BOOST_PP_CAT(d, n)::value;\
typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER(Param)\
(BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param))0
#define BOOST_TYPEOF_INTEGRAL_PARAM_DECLARATION_TYPE(Param)\
BOOST_TYPEOF_INTEGRAL_PARAM_GETTYPE(Param)
#define BOOST_TYPEOF_INTEGRAL_PARAM_PLACEHOLDER_TYPES(Param, n)\
BOOST_PP_CAT(T,n)
#define BOOST_TYPEOF_INTEGRAL_PARAM_ISTEMPLATE 0
#endif//BOOST_TYPEOF_INTEGRAL_TEMPLATE_PARAM_HPP_INCLUDED

View File

@ -1,8 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#if defined(_MSC_VER) && defined BOOST_TYPEOF_MESSAGES
# pragma message(BOOST_TYPEOF_TEXT)
#endif
#undef BOOST_TYPEOF_TEXT

View File

@ -1,121 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
#define BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
#include <boost/typeof/encode_decode.hpp>
#include <boost/preprocessor/facilities/identity.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
// modifiers
#define BOOST_TYPEOF_modifier_support(ID, Fun)\
template<class V, class T> struct encode_type_impl<V, Fun(T)>\
{\
typedef\
typename boost::type_of::encode_type<\
typename boost::type_of::push_back<\
V\
, boost::type_of::constant<std::size_t,ID> >::type\
, T>::type\
type;\
};\
template<class Iter> struct decode_type_impl<boost::type_of::constant<std::size_t,ID>, Iter>\
{\
typedef boost::type_of::decode_type<Iter> d1;\
typedef Fun(typename d1::type) type;\
typedef typename d1::iter iter;\
}
#define BOOST_TYPEOF_const_fun(T) const T
#define BOOST_TYPEOF_volatile_fun(T) volatile T
#define BOOST_TYPEOF_volatile_const_fun(T) volatile const T
#define BOOST_TYPEOF_pointer_fun(T) T*
#define BOOST_TYPEOF_reference_fun(T) T&
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
//Borland incorrectly handles T const, T const volatile and T volatile.
//It drops the decoration no matter what, so we need to try to handle T* const etc. without loosing the top modifier.
#define BOOST_TYPEOF_const_pointer_fun(T) T const *
#define BOOST_TYPEOF_const_reference_fun(T) T const &
#define BOOST_TYPEOF_volatile_pointer_fun(T) T volatile*
#define BOOST_TYPEOF_volatile_reference_fun(T) T volatile&
#define BOOST_TYPEOF_volatile_const_pointer_fun(T) T volatile const *
#define BOOST_TYPEOF_volatile_const_reference_fun(T) T volatile const &
#endif
BOOST_TYPEOF_BEGIN_ENCODE_NS
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_pointer_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_reference_fun);
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_pointer_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_reference_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_pointer_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_reference_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_pointer_fun);
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_reference_fun);
#endif
BOOST_TYPEOF_END_ENCODE_NS
#undef BOOST_TYPEOF_modifier_support
#undef BOOST_TYPEOF_const_fun
#undef BOOST_TYPEOF_volatile_fun
#undef BOOST_TYPEOF_volatile_const_fun
#undef BOOST_TYPEOF_pointer_fun
#undef BOOST_TYPEOF_reference_fun
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
#undef BOOST_TYPEOF_const_pointer_fun
#undef BOOST_TYPEOF_const_reference_fun
#undef BOOST_TYPEOF_volatile_pointer_fun
#undef BOOST_TYPEOF_volatile_reference_fun
#undef BOOST_TYPEOF_volatile_const_pointer_fun
#undef BOOST_TYPEOF_volatile_const_reference_fun
#endif
// arrays
#define BOOST_TYPEOF_array_support(ID, Qualifier)\
template<class V, class T, int N>\
struct encode_type_impl<V, Qualifier() T[N]>\
{\
typedef\
typename boost::type_of::encode_type<\
typename boost::type_of::push_back<\
typename boost::type_of::push_back<\
V\
, boost::type_of::constant<std::size_t,ID> >::type\
, boost::type_of::constant<std::size_t,N> >::type\
, T>::type\
type;\
};\
template<class Iter>\
struct decode_type_impl<boost::type_of::constant<std::size_t,ID>, Iter>\
{\
enum{n = Iter::type::value};\
typedef boost::type_of::decode_type<typename Iter::next> d;\
typedef typename d::type Qualifier() type[n];\
typedef typename d::iter iter;\
}
BOOST_TYPEOF_BEGIN_ENCODE_NS
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_EMPTY);
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(const));
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile));
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile const));
BOOST_TYPEOF_END_ENCODE_NS
#undef BOOST_TYPEOF_array_support
#endif//BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED

View File

@ -12,8 +12,7 @@
# include <boost/config.hpp>
# include <boost/config/workaround.hpp>
# include <boost/typeof/constant.hpp>
# include <boost/type_traits/enable_if.hpp>
# include <boost/type_traits/is_function.hpp>
# include <type_traits>
# include <typeinfo>
@ -168,12 +167,12 @@ namespace boost
{
typedef char(*type)[encode_type<T>::value];
};
template<typename T> typename enable_if_<
!is_function<T>::value,
template<typename T> typename std::enable_if<
!std::is_function<T>::value,
typename sizer<T>::type>::type encode_start(T const&);
template<typename T> typename enable_if_<
is_function<T>::value,
template<typename T> typename std::enable_if<
std::is_function<T>::value,
typename sizer<T>::type>::type encode_start(T&);
template<typename Organizer, typename T>
msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);

View File

@ -1,60 +0,0 @@
// Copyright (C) 2006 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_NATIVE_HPP_INCLUDED
#define BOOST_TYPEOF_NATIVE_HPP_INCLUDED
#ifndef MSVC_TYPEOF_HACK
#ifdef BOOST_NO_SFINAE
namespace boost { namespace type_of {
template<class T>
T& ensure_obj(const T&);
}}
#else
#include <boost/type_traits/enable_if.hpp>
#include <boost/type_traits/is_function.hpp>
namespace boost { namespace type_of {
# ifdef BOOST_NO_SFINAE
template<class T>
T& ensure_obj(const T&);
# else
template<typename T>
typename enable_if_<is_function<T>::value, T&>::type
ensure_obj(T&);
template<typename T>
typename enable_if_<!is_function<T>::value, T&>::type
ensure_obj(const T&);
# endif
}}
#endif//BOOST_NO_SFINAE
#define BOOST_TYPEOF(expr) BOOST_TYPEOF_KEYWORD(boost::type_of::ensure_obj(expr))
#define BOOST_TYPEOF_TPL BOOST_TYPEOF
#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
struct name {\
typedef BOOST_TYPEOF_TPL(expr) type;\
};
#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
struct name {\
typedef BOOST_TYPEOF(expr) type;\
};
#endif//MSVC_TYPEOF_HACK
#define BOOST_TYPEOF_REGISTER_TYPE(x)
#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
#endif//BOOST_TYPEOF_NATIVE_HPP_INCLUDED

View File

@ -1,38 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
#define BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED
#include <boost/typeof/encode_decode_params.hpp>
#include <boost/typeof/encode_decode.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_BEGIN_ENCODE_NS
enum {PTR_DATA_MEM_ID = BOOST_TYPEOF_UNIQUE_ID()};
template<class V, class P0, class P1>
struct encode_type_impl<V, P0 P1::*>
{
typedef BOOST_TYPEOF_ENCODE_PARAMS(2, PTR_DATA_MEM_ID) type;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,PTR_DATA_MEM_ID>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(2)
template<class T> struct workaround{
typedef p0 T::* type;
};
typedef typename decode_type_impl<boost::type_of::constant<std::size_t,PTR_DATA_MEM_ID>, Iter>::template workaround<p1>::type type;
typedef iter2 iter;
};
BOOST_TYPEOF_END_ENCODE_NS
#endif//BOOST_TYPEOF_POINTERS_DATA_MEMBERS_HPP_INCLUDED

View File

@ -1,50 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
#define BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/inc.hpp>
#include <boost/preprocessor/dec.hpp>
#include <boost/preprocessor/if.hpp>
#include <boost/preprocessor/arithmetic/add.hpp>
#include <boost/preprocessor/iteration/iterate.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#ifndef BOOST_TYPEOF_LIMIT_FUNCTION_ARITY
#define BOOST_TYPEOF_LIMIT_FUNCTION_ARITY 10
#endif
enum
{
FUN_ID = BOOST_TYPEOF_UNIQUE_ID(),
FUN_PTR_ID = FUN_ID + 1 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
FUN_REF_ID = FUN_ID + 2 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
MEM_FUN_ID = FUN_ID + 3 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
CONST_MEM_FUN_ID = FUN_ID + 4 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
VOLATILE_MEM_FUN_ID = FUN_ID + 5 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
VOLATILE_CONST_MEM_FUN_ID = FUN_ID + 6 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
FUN_VAR_ID = FUN_ID + 7 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
FUN_VAR_PTR_ID = FUN_ID + 8 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
FUN_VAR_REF_ID = FUN_ID + 9 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
MEM_FUN_VAR_ID = FUN_ID + 10 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
CONST_MEM_FUN_VAR_ID = FUN_ID + 11 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
VOLATILE_MEM_FUN_VAR_ID = FUN_ID + 12 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY),
VOLATILE_CONST_MEM_FUN_VAR_ID = FUN_ID + 13 * BOOST_PP_INC(BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
};
BOOST_TYPEOF_BEGIN_ENCODE_NS
# define BOOST_PP_ITERATION_LIMITS (0, BOOST_TYPEOF_LIMIT_FUNCTION_ARITY)
# define BOOST_PP_FILENAME_1 <boost/typeof/register_functions_iterate.hpp>
# include BOOST_PP_ITERATE()
BOOST_TYPEOF_END_ENCODE_NS
#endif//BOOST_TYPEOF_REGISTER_FUNCTIONS_HPP_INCLUDED

View File

@ -1,135 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#include <boost/typeof/encode_decode_params.hpp>
#define n BOOST_PP_ITERATION()
// function pointers
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(*)(BOOST_PP_ENUM_PARAMS(n, P))>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_PTR_ID + n) type;
};
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(*)(BOOST_PP_ENUM_PARAMS(n, P) ...)>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_PTR_ID + n) type;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_PTR_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(*type)(BOOST_PP_ENUM_PARAMS(n, p));
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_VAR_PTR_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(*type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
#ifndef BOOST_TYPEOF_NO_FUNCTION_TYPES
// function references
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(&)(BOOST_PP_ENUM_PARAMS(n, P))>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_REF_ID + n) type;
};
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(&)(BOOST_PP_ENUM_PARAMS(n, P) ...)>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_REF_ID + n) type;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_REF_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(&type)(BOOST_PP_ENUM_PARAMS(n, p));
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_VAR_REF_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(&type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
// functions
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(BOOST_PP_ENUM_PARAMS(n, P))>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_ID + n) type;
};
template<class V, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(BOOST_PP_ENUM_PARAMS(n, P) ...)>
{
typedef R BOOST_PP_CAT(P, n);
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_INC(n), FUN_VAR_ID + n) type;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(type)(BOOST_PP_ENUM_PARAMS(n, p));
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,FUN_VAR_ID + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_INC(n))
typedef BOOST_PP_CAT(p, n)(type)(BOOST_PP_ENUM_PARAMS(n, p) ...);
typedef BOOST_PP_CAT(iter, BOOST_PP_INC(n)) iter;
};
#endif//BOOST_TYPEOF_NO_FUNCTION_TYPES
#ifndef BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
// member functions
#define BOOST_TYPEOF_qualifier
#define BOOST_TYPEOF_id MEM_FUN_ID
#include <boost/typeof/register_mem_functions.hpp>
#define BOOST_TYPEOF_qualifier const
#define BOOST_TYPEOF_id CONST_MEM_FUN_ID
#include <boost/typeof/register_mem_functions.hpp>
#define BOOST_TYPEOF_qualifier volatile
#define BOOST_TYPEOF_id VOLATILE_MEM_FUN_ID
#include <boost/typeof/register_mem_functions.hpp>
#define BOOST_TYPEOF_qualifier volatile const
#define BOOST_TYPEOF_id VOLATILE_CONST_MEM_FUN_ID
#include <boost/typeof/register_mem_functions.hpp>
#undef n
#endif

View File

@ -1,61 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Copyright (C) 2004 Peder Holt
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
#define BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TYPE(unsigned char)
BOOST_TYPEOF_REGISTER_TYPE(unsigned short)
BOOST_TYPEOF_REGISTER_TYPE(unsigned int)
BOOST_TYPEOF_REGISTER_TYPE(unsigned long)
BOOST_TYPEOF_REGISTER_TYPE(signed char)
BOOST_TYPEOF_REGISTER_TYPE(signed short)
BOOST_TYPEOF_REGISTER_TYPE(signed int)
BOOST_TYPEOF_REGISTER_TYPE(signed long)
BOOST_TYPEOF_REGISTER_TYPE(bool)
BOOST_TYPEOF_REGISTER_TYPE(char)
BOOST_TYPEOF_REGISTER_TYPE(float)
BOOST_TYPEOF_REGISTER_TYPE(double)
BOOST_TYPEOF_REGISTER_TYPE(long double)
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
// If the following line fails to compile and you're using the Intel
// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
BOOST_TYPEOF_REGISTER_TYPE(wchar_t)
#endif
#if (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
|| (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER == 1200))
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int8)
BOOST_TYPEOF_REGISTER_TYPE(__int8)
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int16)
BOOST_TYPEOF_REGISTER_TYPE(__int16)
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int32)
BOOST_TYPEOF_REGISTER_TYPE(__int32)
#ifdef __BORLANDC__
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
BOOST_TYPEOF_REGISTER_TYPE(__int64)
#endif
#endif
# if defined(BOOST_HAS_LONG_LONG)
BOOST_TYPEOF_REGISTER_TYPE(::boost::ulong_long_type)
BOOST_TYPEOF_REGISTER_TYPE(::boost::long_long_type)
#elif defined(BOOST_HAS_MS_INT64)
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int64)
BOOST_TYPEOF_REGISTER_TYPE(__int64)
#endif
BOOST_TYPEOF_REGISTER_TYPE(void)
#endif//BOOST_TYPEOF_REGISTER_FUNDAMENTAL_HPP_INCLUDED

View File

@ -1,32 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#include <boost/typeof/encode_decode_params.hpp>
// member functions
template<class V, class T, class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class P)>
struct encode_type_impl<V, R(T::*)(BOOST_PP_ENUM_PARAMS(n, P)) BOOST_TYPEOF_qualifier>
{
typedef R BOOST_PP_CAT(P, n);
typedef T BOOST_PP_CAT(P, BOOST_PP_INC(n));
typedef BOOST_TYPEOF_ENCODE_PARAMS(BOOST_PP_ADD(n, 2), BOOST_TYPEOF_id + n) type;
};
template<class Iter>
struct decode_type_impl<boost::type_of::constant<std::size_t,BOOST_TYPEOF_id + n>, Iter>
{
typedef Iter iter0;
BOOST_TYPEOF_DECODE_PARAMS(BOOST_PP_ADD(n, 2))
template<class T> struct workaround{
typedef BOOST_PP_CAT(p, n)(T::*type)(BOOST_PP_ENUM_PARAMS(n, p)) BOOST_TYPEOF_qualifier;
};
typedef typename workaround<BOOST_PP_CAT(p, BOOST_PP_INC(n))>::type type;
typedef BOOST_PP_CAT(iter, BOOST_PP_ADD(n, 2)) iter;
};
// undef parameters
#undef BOOST_TYPEOF_id
#undef BOOST_TYPEOF_qualifier

View File

@ -5,11 +5,9 @@
#ifndef BOOST_TYPEOF_STD_bitset_hpp_INCLUDED
#define BOOST_TYPEOF_STD_bitset_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <bitset>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::bitset, (BOOST_TYPEOF_INTEGRAL(std::size_t)))
#endif//BOOST_TYPEOF_STD_bitset_hpp_INCLUDED

View File

@ -5,11 +5,9 @@
#ifndef BOOST_TYPEOF_STD_complex_hpp_INCLUDED
#define BOOST_TYPEOF_STD_complex_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <complex>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::complex, 1)
#endif//BOOST_TYPEOF_STD_complex_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_deque_hpp_INCLUDED
#define BOOST_TYPEOF_STD_deque_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <deque>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::deque, 2)
#endif//BOOST_TYPEOF_STD_deque_hpp_INCLUDED

View File

@ -5,23 +5,10 @@
#ifndef BOOST_TYPEOF_STD_fstream_hpp_INCLUDED
#define BOOST_TYPEOF_STD_fstream_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <fstream>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_filebuf, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ifstream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ofstream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_fstream, 2)
BOOST_TYPEOF_REGISTER_TYPE(std::filebuf)
BOOST_TYPEOF_REGISTER_TYPE(std::ifstream)
BOOST_TYPEOF_REGISTER_TYPE(std::ofstream)
BOOST_TYPEOF_REGISTER_TYPE(std::fstream)
#endif//BOOST_TYPEOF_STD_fstream_hpp_INCLUDED

View File

@ -5,57 +5,10 @@
#ifndef BOOST_TYPEOF_STD_functional_hpp_INCLUDED
#define BOOST_TYPEOF_STD_functional_hpp_INCLUDED
#include <functional>
// This header is no longer useful and is only retained for compatibility
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#ifndef BOOST_NO_CXX98_FUNCTION_BASE
BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_function, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_function, 3)
#endif//BOOST_NO_CXX98_FUNCTION_BASE
BOOST_TYPEOF_REGISTER_TEMPLATE(std::plus, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::minus, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiplies, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::divides, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::modulus, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::negate, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::equal_to, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::not_equal_to, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::greater, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::less, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::greater_equal, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::less_equal, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_and, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_or, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_not, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_negate, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_negate, 1)
#ifndef BOOST_NO_CXX98_BINDERS
#if defined(__MWERKS__) && defined(_MSL_EXTENDED_BINDERS)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder1st, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder2nd, 2)
#else
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder1st, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder2nd, 1)
#endif
BOOST_TYPEOF_REGISTER_TEMPLATE(std::pointer_to_unary_function, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::pointer_to_binary_function, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::mem_fun_t, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::mem_fun1_t, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::mem_fun_ref_t, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::mem_fun1_ref_t, 3)
#if !BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::const_mem_fun_t, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::const_mem_fun1_t, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::const_mem_fun_ref_t, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::const_mem_fun1_ref_t, 3)
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
#endif//BOOST_NO_CXX98_BINDERS
#include <boost/config.hpp>
#include <functional>
#endif//BOOST_TYPEOF_STD_functional_hpp_INCLUDED

View File

@ -5,14 +5,10 @@
#ifndef BOOST_TYPEOF_STD_iostream_hpp_INCLUDED
#define BOOST_TYPEOF_STD_iostream_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <iostream>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::fpos, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ios, 2)
#endif//BOOST_TYPEOF_STD_iostream_hpp_INCLUDED

View File

@ -5,17 +5,10 @@
#ifndef BOOST_TYPEOF_STD_istream_hpp_INCLUDED
#define BOOST_TYPEOF_STD_istream_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <istream>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_iostream, 2)
BOOST_TYPEOF_REGISTER_TYPE(std::istream)
BOOST_TYPEOF_REGISTER_TYPE(std::iostream)
#endif//BOOST_TYPEOF_STD_istream_hpp_INCLUDED

View File

@ -5,54 +5,10 @@
#ifndef BOOST_TYPEOF_STD_iterator_hpp_INCLUDED
#define BOOST_TYPEOF_STD_iterator_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <iterator>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator_traits, 1)
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3)
#else
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 4)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 5)
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TYPE(std::input_iterator_tag)
BOOST_TYPEOF_REGISTER_TYPE(std::output_iterator_tag)
BOOST_TYPEOF_REGISTER_TYPE(std::forward_iterator_tag)
BOOST_TYPEOF_REGISTER_TYPE(std::bidirectional_iterator_tag)
BOOST_TYPEOF_REGISTER_TYPE(std::random_access_iterator_tag)
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 4)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 5)
#else
BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 1)
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::back_insert_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::front_insert_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::insert_iterator, 1)
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3)
#else
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 4)
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 2)
#endif//BOOST_TYPEOF_STD_iterator_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_list_hpp_INCLUDED
#define BOOST_TYPEOF_STD_list_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <list>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::list, 2)
#endif//BOOST_TYPEOF_STD_list_hpp_INCLUDED

View File

@ -5,36 +5,9 @@
#ifndef BOOST_TYPEOF_STD_locale_hpp_INCLUDED
#define BOOST_TYPEOF_STD_locale_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <locale>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TYPE(std::locale)
BOOST_TYPEOF_REGISTER_TYPE(std::ctype_base)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ctype, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::ctype_byname, 1)
BOOST_TYPEOF_REGISTER_TYPE(std::codecvt_base)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::codecvt, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::codecvt_byname, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::num_get, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::num_put, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::numpunct, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::numpunct_byname, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::collate, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::collate_byname, 1)
BOOST_TYPEOF_REGISTER_TYPE(std::time_base)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::time_get, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::time_get_byname, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::time_put, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::time_put_byname, 2)
BOOST_TYPEOF_REGISTER_TYPE(std::money_base)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::money_get, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::money_put, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::moneypunct, (class)(bool))
BOOST_TYPEOF_REGISTER_TEMPLATE(std::moneypunct_byname, (class)(bool))
BOOST_TYPEOF_REGISTER_TYPE(std::messages_base)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::messages, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::messages_byname, 1)
#endif//BOOST_TYPEOF_STD_locale_hpp_INCLUDED

View File

@ -5,19 +5,12 @@
#ifndef BOOST_TYPEOF_STD_map_hpp_INCLUDED
#define BOOST_TYPEOF_STD_map_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <map>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include <boost/typeof/std/functional.hpp>
#include <boost/typeof/std/utility.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::map, 4)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multimap, 4)
#endif//BOOST_TYPEOF_STD_map_hpp_INCLUDED

View File

@ -5,15 +5,10 @@
#ifndef BOOST_TYPEOF_STD_memory_hpp_INCLUDED
#define BOOST_TYPEOF_STD_memory_hpp_INCLUDED
#include <memory>
// This header is no longer useful and is only retained for compatibility
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::allocator, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::raw_storage_iterator, 2)
#ifndef BOOST_NO_AUTO_PTR
BOOST_TYPEOF_REGISTER_TEMPLATE(std::auto_ptr, 1)
#endif//BOOST_NO_AUTO_PTR
#include <boost/config.hpp>
#include <memory>
#endif//BOOST_TYPEOF_STD_memory_hpp_INCLUDED

View File

@ -5,14 +5,10 @@
#ifndef BOOST_TYPEOF_STD_ostream_hpp_INCLUDED
#define BOOST_TYPEOF_STD_ostream_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <ostream>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostream, 2)
BOOST_TYPEOF_REGISTER_TYPE(std::ostream)
#endif//BOOST_TYPEOF_STD_ostream_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_queue_hpp_INCLUDED
#define BOOST_TYPEOF_STD_queue_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <queue>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::queue, 2)
#endif//BOOST_TYPEOF_STD_queue_hpp_INCLUDED

View File

@ -5,18 +5,11 @@
#ifndef BOOST_TYPEOF_STD_set_hpp_INCLUDED
#define BOOST_TYPEOF_STD_set_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <set>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include <boost/typeof/std/functional.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::set, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiset, 3)
#endif//BOOST_TYPEOF_STD_set_hpp_INCLUDED

View File

@ -5,28 +5,11 @@
#ifndef BOOST_TYPEOF_STD_sstream_hpp_INCLUDED
#define BOOST_TYPEOF_STD_sstream_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <sstream>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringbuf, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_istringstream, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_ostringstream, 3)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_stringstream, 3)
BOOST_TYPEOF_REGISTER_TYPE(std::stringbuf)
BOOST_TYPEOF_REGISTER_TYPE(std::istringstream)
BOOST_TYPEOF_REGISTER_TYPE(std::ostringstream)
BOOST_TYPEOF_REGISTER_TYPE(std::stringstream)
#endif//BOOST_TYPEOF_STD_sstream_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_stack_hpp_INCLUDED
#define BOOST_TYPEOF_STD_stack_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <stack>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::stack, 2)
#endif//BOOST_TYPEOF_STD_stack_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_streambuf_hpp_INCLUDED
#define BOOST_TYPEOF_STD_streambuf_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <streambuf>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/string.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_streambuf, 2)
#endif//BOOST_TYPEOF_STD_streambuf_hpp_INCLUDED

View File

@ -5,20 +5,10 @@
#ifndef BOOST_TYPEOF_STD_string_hpp_INCLUDED
#define BOOST_TYPEOF_STD_string_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <string>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::char_traits, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 2)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::basic_string, 3)
#ifndef __BORLANDC__
//Borland chokes on this "double definition" of string
BOOST_TYPEOF_REGISTER_TYPE(std::string)
#endif
#endif//BOOST_TYPEOF_STD_string_hpp_INCLUDED

View File

@ -5,11 +5,9 @@
#ifndef BOOST_TYPEOF_STD_utility_hpp_INCLUDED
#define BOOST_TYPEOF_STD_utility_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <utility>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::pair, 2)
#endif//BOOST_TYPEOF_STD_utility_hpp_INCLUDED

View File

@ -5,17 +5,9 @@
#ifndef BOOST_TYPEOF_STD_valarray_hpp_INCLUDED
#define BOOST_TYPEOF_STD_valarray_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <valarray>
#include <boost/typeof/typeof.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::valarray, 1)
BOOST_TYPEOF_REGISTER_TYPE(std::slice)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::slice_array, 1)
BOOST_TYPEOF_REGISTER_TYPE(std::gslice)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::gslice_array, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::mask_array, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::indirect_array, 1)
#endif//BOOST_TYPEOF_STD_valarray_hpp_INCLUDED

View File

@ -5,13 +5,10 @@
#ifndef BOOST_TYPEOF_STD_vector_hpp_INCLUDED
#define BOOST_TYPEOF_STD_vector_hpp_INCLUDED
// This header is no longer useful and is only retained for compatibility
#include <vector>
#include <boost/typeof/typeof.hpp>
#include <boost/typeof/std/memory.hpp>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 1)
BOOST_TYPEOF_REGISTER_TEMPLATE(std::vector, 2)
#endif//BOOST_TYPEOF_STD_vector_hpp_INCLUDED

View File

@ -1,160 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Copyright (C) 2005 Peder Holt
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
#define BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/repetition/enum_trailing.hpp>
#include <boost/preprocessor/control/iif.hpp>
#include <boost/preprocessor/detail/is_unary.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/preprocessor/seq/transform.hpp>
#include <boost/preprocessor/seq/for_each_i.hpp>
#include <boost/preprocessor/seq/cat.hpp>
#include <boost/typeof/encode_decode.hpp>
#include <boost/typeof/int_encoding.hpp>
#include <boost/typeof/type_template_param.hpp>
#include <boost/typeof/integral_template_param.hpp>
#include <boost/typeof/template_template_param.hpp>
#ifdef __BORLANDC__
#define BOOST_TYPEOF_QUALIFY(P) self_t::P
#else
#define BOOST_TYPEOF_QUALIFY(P) P
#endif
// The template parameter description, entered by the user,
// is converted into a polymorphic "object"
// that is used to generate the code responsible for
// encoding/decoding the parameter, etc.
// make sure to cat the sequence first, and only then add the prefix.
#define BOOST_TYPEOF_MAKE_OBJ(elem) BOOST_PP_CAT(\
BOOST_TYPEOF_MAKE_OBJ,\
BOOST_PP_SEQ_CAT((_) BOOST_TYPEOF_TO_SEQ(elem))\
)
#define BOOST_TYPEOF_TO_SEQ(tokens) BOOST_TYPEOF_ ## tokens ## _BOOST_TYPEOF
// BOOST_TYPEOF_REGISTER_TEMPLATE
#define BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, Id)\
BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(\
Name,\
BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TOSEQ(Params)),\
BOOST_PP_SEQ_SIZE(BOOST_TYPEOF_TOSEQ(Params)),\
Id)
#define BOOST_TYPEOF_REGISTER_TEMPLATE(Name, Params)\
BOOST_TYPEOF_REGISTER_TEMPLATE_EXPLICIT_ID(Name, Params, BOOST_TYPEOF_UNIQUE_ID())
#define BOOST_TYPEOF_OBJECT_MAKER(s, data, elem)\
BOOST_TYPEOF_MAKE_OBJ(elem)
#define BOOST_TYPEOF_MAKE_OBJS(Params)\
BOOST_PP_SEQ_TRANSFORM(BOOST_TYPEOF_OBJECT_MAKER, ~, Params)
// As suggested by Paul Mensonides:
#define BOOST_TYPEOF_TOSEQ(x)\
BOOST_PP_IIF(\
BOOST_PP_IS_UNARY(x),\
x BOOST_PP_TUPLE_EAT(3), BOOST_PP_REPEAT\
)(x, BOOST_TYPEOF_TOSEQ_2, ~)
#define BOOST_TYPEOF_TOSEQ_2(z, n, _) (class)
// BOOST_TYPEOF_VIRTUAL
#define BOOST_TYPEOF_CAT_4(a, b, c, d) BOOST_TYPEOF_CAT_4_I(a, b, c, d)
#define BOOST_TYPEOF_CAT_4_I(a, b, c, d) a ## b ## c ## d
#define BOOST_TYPEOF_VIRTUAL(Fun, Obj)\
BOOST_TYPEOF_CAT_4(BOOST_TYPEOF_, BOOST_PP_SEQ_HEAD(Obj), _, Fun)
// BOOST_TYPEOF_SEQ_ENUM[_TRAILING][_1]
// Two versions provided due to reentrancy issue
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT(z,n,seq)\
BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
#define BOOST_TYPEOF_SEQ_ENUM(seq,macro)\
BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING(seq,macro)\
BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT,(macro)(seq))
#define BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1(z,n,seq)\
BOOST_PP_SEQ_ELEM(0,seq) (z,n,BOOST_PP_SEQ_ELEM(n,BOOST_PP_SEQ_ELEM(1,seq)))
#define BOOST_TYPEOF_SEQ_ENUM_1(seq,macro)\
BOOST_PP_ENUM(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
#define BOOST_TYPEOF_SEQ_ENUM_TRAILING_1(seq,macro)\
BOOST_PP_ENUM_TRAILING(BOOST_PP_SEQ_SIZE(seq),BOOST_TYPEOF_SEQ_EXPAND_ELEMENT_1,(macro)(seq))
//
#define BOOST_TYPEOF_PLACEHOLDER(z, n, elem)\
BOOST_TYPEOF_VIRTUAL(PLACEHOLDER, elem)(elem)
#define BOOST_TYPEOF_PLACEHOLDER_TYPES(z, n, elem)\
BOOST_TYPEOF_VIRTUAL(PLACEHOLDER_TYPES, elem)(elem, n)
#define BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM(r, data, n, elem)\
BOOST_TYPEOF_VIRTUAL(ENCODE, elem)(elem, n)
#define BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM(r, data, n, elem)\
BOOST_TYPEOF_VIRTUAL(DECODE, elem)(elem, n)
#define BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR(z, n, elem) \
BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(P, n)
#define BOOST_TYPEOF_REGISTER_DEFAULT_TEMPLATE_TYPE(Name,Params,ID)\
Name< BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params), P) >
//Since we are creating an internal decode struct, we need to use different template names, T instead of P.
#define BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
BOOST_TYPEOF_VIRTUAL(EXPANDTYPE, elem)(elem) BOOST_PP_CAT(T, n)
//Default template param decoding
#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE(Name,Params)\
typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_QUALIFY(P))> type;
//Branch the decoding
#define BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name,Params)\
BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE,\
BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TYPE)(Name,Params)
#define BOOST_TYPEOF_REGISTER_TEMPLATE_IMPL(Name, Params, Size, ID)\
BOOST_TYPEOF_BEGIN_ENCODE_NS\
BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name, Params, ID)\
template<class V\
BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params, BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
>\
struct encode_type_impl<V, Name<BOOST_PP_ENUM_PARAMS(Size, P)> >\
{\
typedef typename boost::type_of::push_back<V, boost::type_of::constant<std::size_t,ID> >::type V0;\
BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_ENCODE_PARAM, ~, Params)\
typedef BOOST_PP_CAT(V, Size) type;\
};\
template<class Iter>\
struct decode_type_impl<boost::type_of::constant<std::size_t,ID>, Iter>\
{\
typedef decode_type_impl<boost::type_of::constant<std::size_t,ID>, Iter> self_t;\
typedef boost::type_of::constant<std::size_t,ID> self_id;\
typedef Iter iter0;\
BOOST_PP_SEQ_FOR_EACH_I(BOOST_TYPEOF_REGISTER_TEMPLATE_DECODE_PARAM, ~, Params)\
BOOST_TYPEOF_TYPEDEF_DECODED_TYPE(Name, Params)\
typedef BOOST_PP_CAT(iter, Size) iter;\
};\
BOOST_TYPEOF_END_ENCODE_NS
#endif//BOOST_TYPEOF_TEMPLATE_ENCODING_HPP_INCLUDED

View File

@ -1,149 +0,0 @@
// Copyright (C) 2005 Peder Holt
// Copyright (C) 2005 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
#define BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED
#include <boost/preprocessor/logical/or.hpp>
#include <boost/preprocessor/seq/fold_left.hpp>
#include <boost/preprocessor/seq/enum.hpp>
#define BOOST_TYPEOF_MAKE_OBJ_template(x) BOOST_TYPEOF_TEMPLATE_PARAM(x)
#define BOOST_TYPEOF_TEMPLATE(X) template(X) BOOST_TYPEOF_EAT
#define BOOST_TYPEOF_template(X) (template(X))
#define BOOST_TYPEOF_TEMPLATE_PARAM(Params)\
(TEMPLATE_PARAM)\
(Params)
#define BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)\
BOOST_TYPEOF_TOSEQ(BOOST_PP_SEQ_ELEM(1, This))
//Encode / decode this
#define BOOST_TYPEOF_TEMPLATE_PARAM_ENCODE(This, n)\
typedef typename boost::type_of::encode_template<BOOST_PP_CAT(V, n),\
BOOST_PP_CAT(P, n)<BOOST_TYPEOF_SEQ_ENUM(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)),BOOST_TYPEOF_PLACEHOLDER) >\
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
#define BOOST_TYPEOF_TEMPLATE_PARAM_DECODE(This, n)\
typedef boost::type_of::decode_template< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter,BOOST_PP_INC(n));
// template<class, unsigned int, ...> class
#define BOOST_TYPEOF_TEMPLATE_PARAM_EXPANDTYPE(This) \
template <BOOST_PP_SEQ_ENUM(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(This)) > class
#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER(Param)\
Nested_Template_Template_Arguments_Not_Supported
//'template<class,int> class' is reduced to 'class'
#define BOOST_TYPEOF_TEMPLATE_PARAM_DECLARATION_TYPE(Param) class
// T3<int, (unsigned int)0, ...>
#define BOOST_TYPEOF_TEMPLATE_PARAM_PLACEHOLDER_TYPES(Param, n)\
BOOST_PP_CAT(T,n)<BOOST_TYPEOF_SEQ_ENUM_1(BOOST_TYPEOF_MAKE_OBJS(BOOST_TYPEOF_TEMPLATE_PARAM_GETPARAMS(Param)),BOOST_TYPEOF_PLACEHOLDER) >
#define BOOST_TYPEOF_TEMPLATE_PARAM_ISTEMPLATE 1
////////////////////////////
// move to encode_decode?
BOOST_TYPEOF_BEGIN_ENCODE_NS
template<class V, class Type_Not_Registered_With_Typeof_System> struct encode_template_impl;
template<class T, class Iter> struct decode_template_impl;
BOOST_TYPEOF_END_ENCODE_NS
namespace boost { namespace type_of {
template<class V, class T> struct encode_template
: BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_template_impl<V, T>
{};
template<class Iter> struct decode_template
: BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_template_impl<typename Iter::type, typename Iter::next>
{};
}}
////////////////////////////
// move to template_encoding.hpp?
//Template template registration
#define BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE(Name,Params,ID)\
template<class V\
BOOST_TYPEOF_SEQ_ENUM_TRAILING(Params,BOOST_TYPEOF_REGISTER_TEMPLATE_PARAM_PAIR)\
>\
struct encode_template_impl<V,Name<\
BOOST_PP_ENUM_PARAMS(\
BOOST_PP_SEQ_SIZE(Params),\
P)> >\
: boost::type_of::push_back<V, boost::type_of::constant<std::size_t,ID> >\
{\
};\
template<class Iter> struct decode_template_impl<boost::type_of::constant<std::size_t,ID>, Iter>\
{\
BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(Params),BOOST_TYPEOF_TYPEDEF_INT_PN,_)\
typedef Name<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER) > type;\
typedef Iter iter;\
};
#define BOOST_TYPEOF_TYPEDEF_INT_PN(z,n,Params) typedef int BOOST_PP_CAT(P,n);
#ifdef __BORLANDC__
#define BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME BOOST_PP_CAT(\
BOOST_PP_CAT(\
BOOST_PP_CAT(\
decode_nested_template_helper,\
BOOST_TYPEOF_REGISTRATION_GROUP\
),0x10000\
),__LINE__\
)
#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)\
struct BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME {\
template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
struct decode_params;\
template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
{\
typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
};\
};
//Template template param decoding
#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
typedef typename BOOST_TYPEOF_DECODE_NESTED_TEMPLATE_HELPER_NAME::decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
#else
#define BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL(Name,Params,ID)
//Template template param decoding
#define BOOST_TYPEOF_TYPEDEF_DECODED_TEMPLATE_TEMPLATE_TYPE(Name,Params)\
template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR) >\
struct decode_params;\
template<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_REGISTER_DECODER_TYPE_PARAM_PAIR) >\
struct decode_params<BOOST_TYPEOF_SEQ_ENUM(Params,BOOST_TYPEOF_PLACEHOLDER_TYPES) >\
{\
typedef Name<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),T)> type;\
};\
typedef typename decode_params<BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(Params),P)>::type type;
#endif
#define BOOST_TYPEOF_REGISTER_DECLARE_DECODER_TYPE_PARAM_PAIR(z,n,elem) \
BOOST_TYPEOF_VIRTUAL(DECLARATION_TYPE, elem)(elem) BOOST_PP_CAT(T, n)
// BOOST_TYPEOF_HAS_TEMPLATES
#define BOOST_TYPEOF_HAS_TEMPLATES(Params)\
BOOST_PP_SEQ_FOLD_LEFT(BOOST_TYPEOF_HAS_TEMPLATES_OP, 0, Params)
#define BOOST_TYPEOF_HAS_TEMPLATES_OP(s, state, elem)\
BOOST_PP_OR(state, BOOST_TYPEOF_VIRTUAL(ISTEMPLATE, elem))
//Define template template arguments
#define BOOST_TYPEOF_REGISTER_TEMPLATE_TEMPLATE_IMPL(Name,Params,ID)\
BOOST_PP_IF(BOOST_TYPEOF_HAS_TEMPLATES(Params),\
BOOST_TYPEOF_REGISTER_DECODE_NESTED_TEMPLATE_HELPER_IMPL,\
BOOST_TYPEOF_REGISTER_TYPE_FOR_TEMPLATE_TEMPLATE)(Name,Params,ID)
#endif //BOOST_TYPEOF_TEMPLATE_TEMPLATE_PARAM_HPP_INCLUDED

View File

@ -1,27 +0,0 @@
// Copyright (C) 2004 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
#define BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED
#define BOOST_TYPEOF_REGISTER_TYPE_IMPL(T, Id) \
\
template<class V> struct encode_type_impl<V, T > \
: boost::type_of::push_back<V, boost::type_of::constant<std::size_t,Id> > \
{}; \
template<class Iter> struct decode_type_impl<boost::type_of::constant<std::size_t,Id>, Iter> \
{ \
typedef T type; \
typedef Iter iter; \
};
#define BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, Id) \
BOOST_TYPEOF_BEGIN_ENCODE_NS \
BOOST_TYPEOF_REGISTER_TYPE_IMPL(Type, Id) \
BOOST_TYPEOF_END_ENCODE_NS
#define BOOST_TYPEOF_REGISTER_TYPE(Type) \
BOOST_TYPEOF_REGISTER_TYPE_EXPLICIT_ID(Type, BOOST_TYPEOF_UNIQUE_ID())
#endif//BOOST_TYPEOF_TYPE_ENCODING_HPP_INCLUDED

View File

@ -1,37 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
#define BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED
#define BOOST_TYPEOF_class_BOOST_TYPEOF (class)
#define BOOST_TYPEOF_typename_BOOST_TYPEOF (typename)
#define BOOST_TYPEOF_MAKE_OBJ_class BOOST_TYPEOF_TYPE_PARAM
#define BOOST_TYPEOF_MAKE_OBJ_typename BOOST_TYPEOF_TYPE_PARAM
#define BOOST_TYPEOF_TYPE_PARAM\
(TYPE_PARAM)
#define BOOST_TYPEOF_TYPE_PARAM_EXPANDTYPE(Param) class
// TYPE_PARAM "virtual functions" implementation
#define BOOST_TYPEOF_TYPE_PARAM_ENCODE(This, n)\
typedef typename boost::type_of::encode_type<\
BOOST_PP_CAT(V, n),\
BOOST_PP_CAT(P, n)\
>::type BOOST_PP_CAT(V, BOOST_PP_INC(n));
#define BOOST_TYPEOF_TYPE_PARAM_DECODE(This, n)\
typedef boost::type_of::decode_type< BOOST_PP_CAT(iter, n) > BOOST_PP_CAT(d, n);\
typedef typename BOOST_PP_CAT(d, n)::type BOOST_PP_CAT(P, n);\
typedef typename BOOST_PP_CAT(d, n)::iter BOOST_PP_CAT(iter, BOOST_PP_INC(n));
#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER(Param) int
#define BOOST_TYPEOF_TYPE_PARAM_DECLARATION_TYPE(Param) class
#define BOOST_TYPEOF_TYPE_PARAM_PLACEHOLDER_TYPES(Param, n) BOOST_PP_CAT(T,n)
#define BOOST_TYPEOF_TYPE_PARAM_ISTEMPLATE 0
#endif//BOOST_TYPEOF_TYPE_TEMPLATE_PARAM_HPP_INCLUDED

View File

@ -5,188 +5,19 @@
#ifndef BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
#define BOOST_TYPEOF_TYPEOF_HPP_INCLUDED
#if defined(BOOST_TYPEOF_COMPLIANT)
# define BOOST_TYPEOF_EMULATION
#endif
#if defined(BOOST_TYPEOF_EMULATION) && defined(BOOST_TYPEOF_NATIVE)
# error both typeof emulation and native mode requested
#endif
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1900) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_TYPEOF_EMULATION)
# define BOOST_TYPEOF_DECLTYPE
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1900)
#elif defined(__COMO__)
# ifdef __GNUG__
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD typeof
# endif
# else
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# error native typeof is not supported
# endif
# endif
# include <boost/typeof/msvc/typeof_impl.hpp>
#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
# ifdef __GNUC__
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# endif
# else
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# error native typeof is not supported
# endif
# endif
# define BOOST_TYPEOF_REGISTER_TYPE(x)
# define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
#elif defined(__GNUC__) || defined(__clang__)
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# endif
#else
#elif defined(__MWERKS__)
# if(__MWERKS__ <= 0x3003) // 8.x
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# else
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
# endif
# else // 9.x
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# endif
# endif
#elif defined __CODEGEARC__
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
# endif
# else
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
# endif
#elif defined __BORLANDC__
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
# endif
# else
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
# endif
#elif defined __DMC__
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# include <boost/typeof/dmc/typeof_impl.hpp>
# define MSVC_TYPEOF_HACK
# endif
#elif defined(_MSC_VER)
# if (_MSC_VER >= 1310) // 7.1 ->
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# ifndef _MSC_EXTENSIONS
# define BOOST_TYPEOF_EMULATION
# else
# define BOOST_TYPEOF_NATIVE
# endif
# endif
# endif
# ifdef BOOST_TYPEOF_NATIVE
# include <boost/typeof/msvc/typeof_impl.hpp>
# define MSVC_TYPEOF_HACK
# endif
# endif
#elif defined(__HP_aCC)
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# error native typeof is not supported
# endif
#elif defined(__DECCXX)
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# error native typeof is not supported
# endif
#elif defined(__BORLANDC__)
# if (__BORLANDC__ < 0x590)
# define BOOST_TYPEOF_NO_FUNCTION_TYPES
# define BOOST_TYPEOF_NO_MEMBER_FUNCTION_TYPES
# endif
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# error native typeof is not supported
# endif
#elif defined(__SUNPRO_CC)
# if (__SUNPRO_CC < 0x590 )
# ifdef BOOST_TYPEOF_NATIVE
# error native typeof is not supported
# endif
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# endif
# endif
#elif defined(__IBM__TYPEOF__)
# ifndef BOOST_TYPEOF_EMULATION
# ifndef BOOST_TYPEOF_NATIVE
# define BOOST_TYPEOF_NATIVE
# endif
# define BOOST_TYPEOF_KEYWORD __typeof__
# endif
#else //unknown compiler
# ifndef BOOST_TYPEOF_NATIVE
# ifndef BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_EMULATION
# endif
# else
# ifndef BOOST_TYPEOF_KEYWORD
# define BOOST_TYPEOF_KEYWORD typeof
# endif
# endif
# include <boost/typeof/decltype.hpp>
#endif
@ -196,33 +27,8 @@
#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\
<boost/typeof/incr_registration_group.hpp>
#ifdef BOOST_TYPEOF_EMULATION_UNSUPPORTED
# include <boost/typeof/unsupported.hpp>
#elif defined BOOST_TYPEOF_EMULATION
# define BOOST_TYPEOF_TEXT "using typeof emulation"
# include <boost/typeof/message.hpp>
# include <boost/typeof/typeof_impl.hpp>
# include <boost/typeof/type_encoding.hpp>
# include <boost/typeof/template_encoding.hpp>
# include <boost/typeof/modifiers.hpp>
# include <boost/typeof/pointers_data_members.hpp>
# include <boost/typeof/register_functions.hpp>
# include <boost/typeof/register_fundamental.hpp>
#elif defined(BOOST_TYPEOF_NATIVE)
# define BOOST_TYPEOF_TEXT "using native typeof"
# include <boost/typeof/message.hpp>
# ifdef BOOST_TYPEOF_DECLTYPE
# include <boost/typeof/decltype.hpp>
# else
# include <boost/typeof/native.hpp>
# endif
#else
# error typeof configuration error
#endif
// auto
#define BOOST_AUTO(Var, Expr) BOOST_TYPEOF(Expr) Var = Expr
#define BOOST_AUTO_TPL(Var, Expr) BOOST_TYPEOF_TPL(Expr) Var = Expr
#define BOOST_AUTO(Var, Expr) auto Var = Expr
#define BOOST_AUTO_TPL(Var, Expr) auto Var = Expr
#endif//BOOST_TYPEOF_TYPEOF_HPP_INCLUDED

View File

@ -1,186 +0,0 @@
// Copyright (C) 2004, 2005 Arkadiy Vertleyb
// Copyright (C) 2005 Peder Holt
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
#define BOOST_TYPEOF_TYPEOF_IMPL_HPP_INCLUDED
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/typeof/constant.hpp>
#include <boost/typeof/encode_decode.hpp>
#include <boost/typeof/vector.hpp>
#include <boost/type_traits/enable_if.hpp>
#include <boost/type_traits/is_function.hpp>
#define BOOST_TYPEOF_VECTOR(n) BOOST_PP_CAT(boost::type_of::vector, n)
#define BOOST_TYPEOF_sizer_item(z, n, _)\
char item ## n[V::item ## n ::value];
namespace boost { namespace type_of {
template<class V>
struct sizer
{
// char item0[V::item0::value];
// char item1[V::item1::value];
// ...
BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_sizer_item, ~)
};
}}
#undef BOOST_TYPEOF_sizer_item
//
namespace boost { namespace type_of {
# ifdef BOOST_NO_SFINAE
template<class V, class T>
sizer<typename encode_type<V, T>::type> encode(const T&);
# else
template<class V, class T>
typename enable_if_<
is_function<T>::value,
sizer<typename encode_type<V, T>::type> >::type encode(T&);
template<class V, class T>
typename enable_if_<
!is_function<T>::value,
sizer<typename encode_type<V, T>::type> >::type encode(const T&);
# endif
}}
//
namespace boost { namespace type_of {
template<class V>
struct decode_begin
{
typedef typename decode_type<typename V::begin>::type type;
};
}}
#define BOOST_TYPEOF_TYPEITEM(z, n, expr)\
boost::type_of::constant<std::size_t,sizeof(boost::type_of::encode<BOOST_TYPEOF_VECTOR(0)<> >(expr).item ## n)>
#define BOOST_TYPEOF_ENCODED_VECTOR(Expr) \
BOOST_TYPEOF_VECTOR(BOOST_TYPEOF_LIMIT_SIZE)< \
BOOST_PP_ENUM(BOOST_TYPEOF_LIMIT_SIZE, BOOST_TYPEOF_TYPEITEM, Expr) \
>
#define BOOST_TYPEOF(Expr)\
boost::type_of::decode_begin<BOOST_TYPEOF_ENCODED_VECTOR(Expr) >::type
#define BOOST_TYPEOF_TPL typename BOOST_TYPEOF
//offset_vector is used to delay the insertion of data into the vector in order to allow
//encoding to be done in many steps
namespace boost { namespace type_of {
template<typename V,typename Offset>
struct offset_vector {
};
template<class V,class Offset,class T>
struct push_back<boost::type_of::offset_vector<V,Offset>,T> {
typedef offset_vector<V,typename Offset::prior> type;
};
template<class V,class T>
struct push_back<boost::type_of::offset_vector<V,constant<std::size_t,0> >,T> {
typedef typename push_back<V,T>::type type;
};
}}
#define BOOST_TYPEOF_NESTED_TYPEITEM(z, n, expr)\
BOOST_STATIC_CONSTANT(int,BOOST_PP_CAT(value,n) = sizeof(boost::type_of::encode<_typeof_start_vector>(expr).item ## n));\
typedef boost::type_of::constant<std::size_t,BOOST_PP_CAT(self_t::value,n)> BOOST_PP_CAT(item,n);
#ifdef __DMC__
#define BOOST_TYPEOF_NESTED_TYPEITEM_2(z,n,expr)\
typedef typename _typeof_encode_fraction<iteration>::BOOST_PP_CAT(item,n) BOOST_PP_CAT(item,n);
#define BOOST_TYPEOF_FRACTIONTYPE()\
BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM_2,_)\
typedef _typeof_fraction_iter<Pos> fraction_type;
#else
#define BOOST_TYPEOF_FRACTIONTYPE()\
typedef _typeof_encode_fraction<self_t::iteration> fraction_type;
#endif
#ifdef __BORLANDC__
namespace boost { namespace type_of {
template<typename Pos,typename Iter>
struct generic_typeof_fraction_iter {
typedef generic_typeof_fraction_iter<Pos,Iter> self_t;
static const int pos=(Pos::value);
static const int iteration=(pos/5);
static const int where=pos%5;
typedef typename Iter::template _apply_next<self_t::iteration>::type fraction_type;
typedef generic_typeof_fraction_iter<typename Pos::next,Iter> next;
typedef typename v_iter<fraction_type,constant<int, self_t::where> >::type type;
};
}}
#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
template<int _Typeof_Iteration>\
struct _typeof_encode_fraction {\
typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::type_of::constant<std::size_t,self_t::_typeof_encode_offset> > _typeof_start_vector;\
BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
template<int Next>\
struct _apply_next {\
typedef _typeof_encode_fraction<Next> type;\
};\
};\
template<typename Pos>\
struct _typeof_fraction_iter {\
typedef boost::type_of::generic_typeof_fraction_iter<Pos,_typeof_encode_fraction<0> > self_t;\
typedef typename self_t::next next;\
typedef typename self_t::type type;\
};
#else
#define BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr) \
template<int _Typeof_Iteration>\
struct _typeof_encode_fraction {\
typedef _typeof_encode_fraction<_Typeof_Iteration> self_t;\
BOOST_STATIC_CONSTANT(int,_typeof_encode_offset = (_Typeof_Iteration*BOOST_TYPEOF_LIMIT_SIZE));\
typedef boost::type_of::offset_vector<BOOST_TYPEOF_VECTOR(0)<>,boost::type_of::constant<std::size_t,self_t::_typeof_encode_offset> > _typeof_start_vector;\
BOOST_PP_REPEAT(BOOST_TYPEOF_LIMIT_SIZE,BOOST_TYPEOF_NESTED_TYPEITEM,expr)\
};\
template<typename Pos>\
struct _typeof_fraction_iter {\
typedef _typeof_fraction_iter<Pos> self_t;\
BOOST_STATIC_CONSTANT(int,pos=(Pos::value));\
BOOST_STATIC_CONSTANT(int,iteration=(pos/BOOST_TYPEOF_LIMIT_SIZE));\
BOOST_STATIC_CONSTANT(int,where=pos%BOOST_TYPEOF_LIMIT_SIZE);\
BOOST_TYPEOF_FRACTIONTYPE()\
typedef typename boost::type_of::v_iter<fraction_type,boost::type_of::constant<int,self_t::where> >::type type;\
typedef _typeof_fraction_iter<typename Pos::next> next;\
};
#endif
#ifdef __MWERKS__
# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
template<typename T>\
struct BOOST_PP_CAT(_typeof_template_,name) {\
BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::type_of::constant<std::size_t,0> > >::type type;\
};\
typedef BOOST_PP_CAT(_typeof_template_,name)<int> name;
# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) BOOST_TYPEOF_NESTED_TYPEDEF(name,expr)
#else
# define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
struct name {\
BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
typedef typename boost::type_of::decode_type<_typeof_fraction_iter<boost::type_of::constant<std::size_t,0> > >::type type;\
};
# define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
struct name {\
BOOST_TYPEOF_NESTED_TYPEDEF_IMPL(expr)\
typedef boost::type_of::decode_type<_typeof_fraction_iter<boost::type_of::constant<std::size_t,0> > >::type type;\
};
#endif
#endif//BOOST_TYPEOF_COMPLIANT_TYPEOF_IMPL_HPP_INCLUDED

View File

@ -1,29 +0,0 @@
// Copyright (C) 2010 Peder Holt
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
#define BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
namespace boost { namespace type_of {
struct typeof_emulation_is_unsupported_on_this_compiler {};
}}
#define BOOST_TYPEOF(expr) boost::type_of::typeof_emulation_is_unsupported_on_this_compiler
#define BOOST_TYPEOF_TPL BOOST_TYPEOF
#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
struct name {\
typedef BOOST_TYPEOF_TPL(expr) type;\
};
#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
struct name {\
typedef BOOST_TYPEOF(expr) type;\
};
#define BOOST_TYPEOF_REGISTER_TYPE(x)
#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
#endif

View File

@ -1,166 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Copyright (C) 2005 Peder Holt
//
// Copyright (C) 2006 Tobias Schwinger
//
// Use, modification and distribution is subject to the Boost Software
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
#ifndef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
#include <boost/typeof/constant.hpp>
#include <boost/preprocessor/iteration/self.hpp>
#ifndef BOOST_TYPEOF_LIMIT_SIZE
# define BOOST_TYPEOF_LIMIT_SIZE 50
#endif
//
// To recreate the preprocessed versions of this file preprocess and run
//
// $(BOOST_ROOT)/libs/typeof/tools/preprocess.pl
//
#if defined(BOOST_TYPEOF_PP_INCLUDE_EXTERNAL)
# undef BOOST_TYPEOF_PP_INCLUDE_EXTERNAL
#elif !defined(BOOST_TYPEOF_PREPROCESSING_MODE) && !BOOST_PP_IS_SELFISH
# define BOOST_PP_INDIRECT_SELF <boost/typeof/vector.hpp>
# if BOOST_TYPEOF_LIMIT_SIZE < 50
# include BOOST_PP_INCLUDE_SELF()
# elif BOOST_TYPEOF_LIMIT_SIZE < 100
# include <boost/typeof/vector50.hpp>
# define BOOST_TYPEOF_PP_START_SIZE 51
# include BOOST_PP_INCLUDE_SELF()
# elif BOOST_TYPEOF_LIMIT_SIZE < 150
# include <boost/typeof/vector100.hpp>
# define BOOST_TYPEOF_PP_START_SIZE 101
# include BOOST_PP_INCLUDE_SELF()
# elif BOOST_TYPEOF_LIMIT_SIZE < 200
# include <boost/typeof/vector150.hpp>
# define BOOST_TYPEOF_PP_START_SIZE 151
# include BOOST_PP_INCLUDE_SELF()
# elif BOOST_TYPEOF_LIMIT_SIZE <= 250
# include <boost/typeof/vector200.hpp>
# define BOOST_TYPEOF_PP_START_SIZE 201
# include BOOST_PP_INCLUDE_SELF()
# else
# error "BOOST_TYPEOF_LIMIT_SIZE too high"
# endif
#else// defined(BOOST_TYPEOF_PREPROCESSING_MODE) || BOOST_PP_IS_SELFISH
# ifndef BOOST_TYPEOF_PP_NEXT_SIZE
# define BOOST_TYPEOF_PP_NEXT_SIZE BOOST_TYPEOF_LIMIT_SIZE
# endif
# ifndef BOOST_TYPEOF_PP_START_SIZE
# define BOOST_TYPEOF_PP_START_SIZE 0
# endif
# if BOOST_TYPEOF_PP_START_SIZE <= BOOST_TYPEOF_LIMIT_SIZE
# include <boost/preprocessor/enum_params.hpp>
# include <boost/preprocessor/repeat.hpp>
# include <boost/preprocessor/repeat_from_to.hpp>
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/inc.hpp>
# include <boost/preprocessor/dec.hpp>
# include <boost/preprocessor/comma_if.hpp>
# include <boost/preprocessor/iteration/local.hpp>
# include <boost/preprocessor/control/expr_iif.hpp>
# include <boost/preprocessor/logical/not.hpp>
// iterator
# define BOOST_TYPEOF_spec_iter(n)\
template<class V>\
struct v_iter<V, constant<int,n> >\
{\
typedef typename V::item ## n type;\
typedef v_iter<V, constant<int,n + 1> > next;\
};
namespace boost { namespace type_of {
template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter; // not defined
# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_iter
# define BOOST_PP_LOCAL_LIMITS \
(BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
# include BOOST_PP_LOCAL_ITERATE()
}}
# undef BOOST_TYPEOF_spec_iter
// vector
# define BOOST_TYPEOF_typedef_item(z, n, _)\
typedef P ## n item ## n;
# define BOOST_TYPEOF_typedef_fake_item(z, n, _)\
typedef constant<int,1> item ## n;
# define BOOST_TYPEOF_define_vector(n)\
template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(n), class T = void)>\
struct vector ## n\
{\
typedef v_iter<vector ## n<BOOST_PP_ENUM_PARAMS(n,P)>, boost::type_of::constant<int,0> > begin;\
BOOST_PP_REPEAT(n, BOOST_TYPEOF_typedef_item, ~)\
BOOST_PP_REPEAT_FROM_TO(n, BOOST_TYPEOF_PP_NEXT_SIZE, BOOST_TYPEOF_typedef_fake_item, ~)\
};
namespace boost { namespace type_of {
# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_define_vector
# define BOOST_PP_LOCAL_LIMITS \
(BOOST_TYPEOF_PP_START_SIZE,BOOST_TYPEOF_LIMIT_SIZE)
# include BOOST_PP_LOCAL_ITERATE()
}}
# undef BOOST_TYPEOF_typedef_item
# undef BOOST_TYPEOF_typedef_fake_item
# undef BOOST_TYPEOF_define_vector
// push_back
# define BOOST_TYPEOF_spec_push_back(n)\
template<BOOST_PP_ENUM_PARAMS(n, class P) BOOST_PP_COMMA_IF(n) class T>\
struct push_back<BOOST_PP_CAT(boost::type_of::vector, n)<BOOST_PP_ENUM_PARAMS(n, P)>, T>\
{\
typedef BOOST_PP_CAT(boost::type_of::vector, BOOST_PP_INC(n))<\
BOOST_PP_ENUM_PARAMS(n, P) BOOST_PP_COMMA_IF(n) T\
> type;\
};
namespace boost { namespace type_of {
# if BOOST_TYPEOF_LIMIT_SIZE < 50
template<class V, class T> struct push_back {
typedef V type;
};
# endif
//default behaviour is to let push_back ignore T, and return the input vector.
//This is to let BOOST_TYPEOF_NESTED_TYPEDEF work properly with the default vector.
# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_push_back
# define BOOST_PP_LOCAL_LIMITS \
(BOOST_PP_DEC(BOOST_TYPEOF_PP_START_SIZE), \
BOOST_PP_DEC(BOOST_TYPEOF_LIMIT_SIZE))
# include BOOST_PP_LOCAL_ITERATE()
}}
# undef BOOST_TYPEOF_spec_push_back
# endif//BOOST_TYPEOF_PP_START_SIZE<=BOOST_TYPEOF_LIMIT_SIZE
# undef BOOST_TYPEOF_PP_START_SIZE
# undef BOOST_TYPEOF_PP_NEXT_SIZE
#endif//BOOST_TYPEOF_PREPROCESSING_MODE || BOOST_PP_IS_SELFISH
#define BOOST_TYPEOF_VECTOR_HPP_INCLUDED
#endif//BOOST_TYPEOF_VECTOR_HPP_INCLUDED

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,171 +0,0 @@
// Copyright (C) 2005 Arkadiy Vertleyb
// Copyright (C) 2005 Peder Holt
//
// Use modification and distribution are subject to the boost Software License,
// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
// Preprocessed code, do not edit manually !
namespace boost { namespace type_of {
template<class V, class Increase_BOOST_TYPEOF_LIMIT_SIZE> struct v_iter;
template<class V> struct v_iter<V, constant<int,0> > { typedef typename V::item0 type; typedef v_iter<V, constant<int,0 + 1> > next; };
template<class V> struct v_iter<V, constant<int,1> > { typedef typename V::item1 type; typedef v_iter<V, constant<int,1 + 1> > next; };
template<class V> struct v_iter<V, constant<int,2> > { typedef typename V::item2 type; typedef v_iter<V, constant<int,2 + 1> > next; };
template<class V> struct v_iter<V, constant<int,3> > { typedef typename V::item3 type; typedef v_iter<V, constant<int,3 + 1> > next; };
template<class V> struct v_iter<V, constant<int,4> > { typedef typename V::item4 type; typedef v_iter<V, constant<int,4 + 1> > next; };
template<class V> struct v_iter<V, constant<int,5> > { typedef typename V::item5 type; typedef v_iter<V, constant<int,5 + 1> > next; };
template<class V> struct v_iter<V, constant<int,6> > { typedef typename V::item6 type; typedef v_iter<V, constant<int,6 + 1> > next; };
template<class V> struct v_iter<V, constant<int,7> > { typedef typename V::item7 type; typedef v_iter<V, constant<int,7 + 1> > next; };
template<class V> struct v_iter<V, constant<int,8> > { typedef typename V::item8 type; typedef v_iter<V, constant<int,8 + 1> > next; };
template<class V> struct v_iter<V, constant<int,9> > { typedef typename V::item9 type; typedef v_iter<V, constant<int,9 + 1> > next; };
template<class V> struct v_iter<V, constant<int,10> > { typedef typename V::item10 type; typedef v_iter<V, constant<int,10 + 1> > next; };
template<class V> struct v_iter<V, constant<int,11> > { typedef typename V::item11 type; typedef v_iter<V, constant<int,11 + 1> > next; };
template<class V> struct v_iter<V, constant<int,12> > { typedef typename V::item12 type; typedef v_iter<V, constant<int,12 + 1> > next; };
template<class V> struct v_iter<V, constant<int,13> > { typedef typename V::item13 type; typedef v_iter<V, constant<int,13 + 1> > next; };
template<class V> struct v_iter<V, constant<int,14> > { typedef typename V::item14 type; typedef v_iter<V, constant<int,14 + 1> > next; };
template<class V> struct v_iter<V, constant<int,15> > { typedef typename V::item15 type; typedef v_iter<V, constant<int,15 + 1> > next; };
template<class V> struct v_iter<V, constant<int,16> > { typedef typename V::item16 type; typedef v_iter<V, constant<int,16 + 1> > next; };
template<class V> struct v_iter<V, constant<int,17> > { typedef typename V::item17 type; typedef v_iter<V, constant<int,17 + 1> > next; };
template<class V> struct v_iter<V, constant<int,18> > { typedef typename V::item18 type; typedef v_iter<V, constant<int,18 + 1> > next; };
template<class V> struct v_iter<V, constant<int,19> > { typedef typename V::item19 type; typedef v_iter<V, constant<int,19 + 1> > next; };
template<class V> struct v_iter<V, constant<int,20> > { typedef typename V::item20 type; typedef v_iter<V, constant<int,20 + 1> > next; };
template<class V> struct v_iter<V, constant<int,21> > { typedef typename V::item21 type; typedef v_iter<V, constant<int,21 + 1> > next; };
template<class V> struct v_iter<V, constant<int,22> > { typedef typename V::item22 type; typedef v_iter<V, constant<int,22 + 1> > next; };
template<class V> struct v_iter<V, constant<int,23> > { typedef typename V::item23 type; typedef v_iter<V, constant<int,23 + 1> > next; };
template<class V> struct v_iter<V, constant<int,24> > { typedef typename V::item24 type; typedef v_iter<V, constant<int,24 + 1> > next; };
template<class V> struct v_iter<V, constant<int,25> > { typedef typename V::item25 type; typedef v_iter<V, constant<int,25 + 1> > next; };
template<class V> struct v_iter<V, constant<int,26> > { typedef typename V::item26 type; typedef v_iter<V, constant<int,26 + 1> > next; };
template<class V> struct v_iter<V, constant<int,27> > { typedef typename V::item27 type; typedef v_iter<V, constant<int,27 + 1> > next; };
template<class V> struct v_iter<V, constant<int,28> > { typedef typename V::item28 type; typedef v_iter<V, constant<int,28 + 1> > next; };
template<class V> struct v_iter<V, constant<int,29> > { typedef typename V::item29 type; typedef v_iter<V, constant<int,29 + 1> > next; };
template<class V> struct v_iter<V, constant<int,30> > { typedef typename V::item30 type; typedef v_iter<V, constant<int,30 + 1> > next; };
template<class V> struct v_iter<V, constant<int,31> > { typedef typename V::item31 type; typedef v_iter<V, constant<int,31 + 1> > next; };
template<class V> struct v_iter<V, constant<int,32> > { typedef typename V::item32 type; typedef v_iter<V, constant<int,32 + 1> > next; };
template<class V> struct v_iter<V, constant<int,33> > { typedef typename V::item33 type; typedef v_iter<V, constant<int,33 + 1> > next; };
template<class V> struct v_iter<V, constant<int,34> > { typedef typename V::item34 type; typedef v_iter<V, constant<int,34 + 1> > next; };
template<class V> struct v_iter<V, constant<int,35> > { typedef typename V::item35 type; typedef v_iter<V, constant<int,35 + 1> > next; };
template<class V> struct v_iter<V, constant<int,36> > { typedef typename V::item36 type; typedef v_iter<V, constant<int,36 + 1> > next; };
template<class V> struct v_iter<V, constant<int,37> > { typedef typename V::item37 type; typedef v_iter<V, constant<int,37 + 1> > next; };
template<class V> struct v_iter<V, constant<int,38> > { typedef typename V::item38 type; typedef v_iter<V, constant<int,38 + 1> > next; };
template<class V> struct v_iter<V, constant<int,39> > { typedef typename V::item39 type; typedef v_iter<V, constant<int,39 + 1> > next; };
template<class V> struct v_iter<V, constant<int,40> > { typedef typename V::item40 type; typedef v_iter<V, constant<int,40 + 1> > next; };
template<class V> struct v_iter<V, constant<int,41> > { typedef typename V::item41 type; typedef v_iter<V, constant<int,41 + 1> > next; };
template<class V> struct v_iter<V, constant<int,42> > { typedef typename V::item42 type; typedef v_iter<V, constant<int,42 + 1> > next; };
template<class V> struct v_iter<V, constant<int,43> > { typedef typename V::item43 type; typedef v_iter<V, constant<int,43 + 1> > next; };
template<class V> struct v_iter<V, constant<int,44> > { typedef typename V::item44 type; typedef v_iter<V, constant<int,44 + 1> > next; };
template<class V> struct v_iter<V, constant<int,45> > { typedef typename V::item45 type; typedef v_iter<V, constant<int,45 + 1> > next; };
template<class V> struct v_iter<V, constant<int,46> > { typedef typename V::item46 type; typedef v_iter<V, constant<int,46 + 1> > next; };
template<class V> struct v_iter<V, constant<int,47> > { typedef typename V::item47 type; typedef v_iter<V, constant<int,47 + 1> > next; };
template<class V> struct v_iter<V, constant<int,48> > { typedef typename V::item48 type; typedef v_iter<V, constant<int,48 + 1> > next; };
template<class V> struct v_iter<V, constant<int,49> > { typedef typename V::item49 type; typedef v_iter<V, constant<int,49 + 1> > next; };
}}
namespace boost { namespace type_of {
template< class T = void> struct vector0 { typedef v_iter<vector0<>, boost::type_of::constant<int,0> > begin; typedef constant<int,1> item0; typedef constant<int,1> item1; typedef constant<int,1> item2; typedef constant<int,1> item3; typedef constant<int,1> item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 > struct vector1 { typedef v_iter<vector1< P0>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef constant<int,1> item1; typedef constant<int,1> item2; typedef constant<int,1> item3; typedef constant<int,1> item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 > struct vector2 { typedef v_iter<vector2< P0 , P1>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef constant<int,1> item2; typedef constant<int,1> item3; typedef constant<int,1> item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 > struct vector3 { typedef v_iter<vector3< P0 , P1 , P2>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef constant<int,1> item3; typedef constant<int,1> item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 > struct vector4 { typedef v_iter<vector4< P0 , P1 , P2 , P3>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef constant<int,1> item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 > struct vector5 { typedef v_iter<vector5< P0 , P1 , P2 , P3 , P4>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef constant<int,1> item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 > struct vector6 { typedef v_iter<vector6< P0 , P1 , P2 , P3 , P4 , P5>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef constant<int,1> item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 > struct vector7 { typedef v_iter<vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef constant<int,1> item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 > struct vector8 { typedef v_iter<vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef constant<int,1> item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 > struct vector9 { typedef v_iter<vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef constant<int,1> item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 > struct vector10 { typedef v_iter<vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef constant<int,1> item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 > struct vector11 { typedef v_iter<vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef constant<int,1> item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 > struct vector12 { typedef v_iter<vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef constant<int,1> item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 > struct vector13 { typedef v_iter<vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef constant<int,1> item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 > struct vector14 { typedef v_iter<vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef constant<int,1> item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 > struct vector15 { typedef v_iter<vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef constant<int,1> item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 > struct vector16 { typedef v_iter<vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef constant<int,1> item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 > struct vector17 { typedef v_iter<vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef constant<int,1> item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 > struct vector18 { typedef v_iter<vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef constant<int,1> item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 > struct vector19 { typedef v_iter<vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef constant<int,1> item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 > struct vector20 { typedef v_iter<vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef constant<int,1> item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 > struct vector21 { typedef v_iter<vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef constant<int,1> item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 > struct vector22 { typedef v_iter<vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef constant<int,1> item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 > struct vector23 { typedef v_iter<vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef constant<int,1> item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 > struct vector24 { typedef v_iter<vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef constant<int,1> item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 > struct vector25 { typedef v_iter<vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef constant<int,1> item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 > struct vector26 { typedef v_iter<vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef constant<int,1> item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 > struct vector27 { typedef v_iter<vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef constant<int,1> item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 > struct vector28 { typedef v_iter<vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef constant<int,1> item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 > struct vector29 { typedef v_iter<vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef constant<int,1> item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 > struct vector30 { typedef v_iter<vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef constant<int,1> item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 > struct vector31 { typedef v_iter<vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef constant<int,1> item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 > struct vector32 { typedef v_iter<vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef constant<int,1> item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 > struct vector33 { typedef v_iter<vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef constant<int,1> item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 > struct vector34 { typedef v_iter<vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef constant<int,1> item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 > struct vector35 { typedef v_iter<vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef constant<int,1> item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 > struct vector36 { typedef v_iter<vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef constant<int,1> item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 > struct vector37 { typedef v_iter<vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef constant<int,1> item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 > struct vector38 { typedef v_iter<vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef constant<int,1> item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 > struct vector39 { typedef v_iter<vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef constant<int,1> item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 > struct vector40 { typedef v_iter<vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef constant<int,1> item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 > struct vector41 { typedef v_iter<vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef constant<int,1> item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 > struct vector42 { typedef v_iter<vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef constant<int,1> item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 > struct vector43 { typedef v_iter<vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef constant<int,1> item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 > struct vector44 { typedef v_iter<vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef constant<int,1> item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 > struct vector45 { typedef v_iter<vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef constant<int,1> item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 > struct vector46 { typedef v_iter<vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef constant<int,1> item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 > struct vector47 { typedef v_iter<vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef constant<int,1> item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 > struct vector48 { typedef v_iter<vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef constant<int,1> item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 > struct vector49 { typedef v_iter<vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef constant<int,1> item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class P49 > struct vector50 { typedef v_iter<vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , P49>, boost::type_of::constant<int,0> > begin; typedef P0 item0; typedef P1 item1; typedef P2 item2; typedef P3 item3; typedef P4 item4; typedef P5 item5; typedef P6 item6; typedef P7 item7; typedef P8 item8; typedef P9 item9; typedef P10 item10; typedef P11 item11; typedef P12 item12; typedef P13 item13; typedef P14 item14; typedef P15 item15; typedef P16 item16; typedef P17 item17; typedef P18 item18; typedef P19 item19; typedef P20 item20; typedef P21 item21; typedef P22 item22; typedef P23 item23; typedef P24 item24; typedef P25 item25; typedef P26 item26; typedef P27 item27; typedef P28 item28; typedef P29 item29; typedef P30 item30; typedef P31 item31; typedef P32 item32; typedef P33 item33; typedef P34 item34; typedef P35 item35; typedef P36 item36; typedef P37 item37; typedef P38 item38; typedef P39 item39; typedef P40 item40; typedef P41 item41; typedef P42 item42; typedef P43 item43; typedef P44 item44; typedef P45 item45; typedef P46 item46; typedef P47 item47; typedef P48 item48; typedef P49 item49; typedef constant<int,1> item50; typedef constant<int,1> item51; typedef constant<int,1> item52; typedef constant<int,1> item53; typedef constant<int,1> item54; typedef constant<int,1> item55; typedef constant<int,1> item56; typedef constant<int,1> item57; typedef constant<int,1> item58; typedef constant<int,1> item59; typedef constant<int,1> item60; typedef constant<int,1> item61; typedef constant<int,1> item62; typedef constant<int,1> item63; typedef constant<int,1> item64; typedef constant<int,1> item65; typedef constant<int,1> item66; typedef constant<int,1> item67; typedef constant<int,1> item68; typedef constant<int,1> item69; typedef constant<int,1> item70; typedef constant<int,1> item71; typedef constant<int,1> item72; typedef constant<int,1> item73; typedef constant<int,1> item74; typedef constant<int,1> item75; typedef constant<int,1> item76; typedef constant<int,1> item77; typedef constant<int,1> item78; typedef constant<int,1> item79; typedef constant<int,1> item80; typedef constant<int,1> item81; typedef constant<int,1> item82; typedef constant<int,1> item83; typedef constant<int,1> item84; typedef constant<int,1> item85; typedef constant<int,1> item86; typedef constant<int,1> item87; typedef constant<int,1> item88; typedef constant<int,1> item89; typedef constant<int,1> item90; typedef constant<int,1> item91; typedef constant<int,1> item92; typedef constant<int,1> item93; typedef constant<int,1> item94; typedef constant<int,1> item95; typedef constant<int,1> item96; typedef constant<int,1> item97; typedef constant<int,1> item98; typedef constant<int,1> item99; };
}}
namespace boost { namespace type_of {
template<class V, class T> struct push_back {
typedef V type;
};
template< class T> struct push_back<boost::type_of::vector0<>, T> { typedef boost::type_of::vector1< T > type; };
template< class P0 , class T> struct push_back<boost::type_of::vector1< P0>, T> { typedef boost::type_of::vector2< P0 , T > type; };
template< class P0 , class P1 , class T> struct push_back<boost::type_of::vector2< P0 , P1>, T> { typedef boost::type_of::vector3< P0 , P1 , T > type; };
template< class P0 , class P1 , class P2 , class T> struct push_back<boost::type_of::vector3< P0 , P1 , P2>, T> { typedef boost::type_of::vector4< P0 , P1 , P2 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class T> struct push_back<boost::type_of::vector4< P0 , P1 , P2 , P3>, T> { typedef boost::type_of::vector5< P0 , P1 , P2 , P3 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class T> struct push_back<boost::type_of::vector5< P0 , P1 , P2 , P3 , P4>, T> { typedef boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class T> struct push_back<boost::type_of::vector6< P0 , P1 , P2 , P3 , P4 , P5>, T> { typedef boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class T> struct push_back<boost::type_of::vector7< P0 , P1 , P2 , P3 , P4 , P5 , P6>, T> { typedef boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class T> struct push_back<boost::type_of::vector8< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7>, T> { typedef boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class T> struct push_back<boost::type_of::vector9< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8>, T> { typedef boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class T> struct push_back<boost::type_of::vector10< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9>, T> { typedef boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class T> struct push_back<boost::type_of::vector11< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10>, T> { typedef boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class T> struct push_back<boost::type_of::vector12< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11>, T> { typedef boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class T> struct push_back<boost::type_of::vector13< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12>, T> { typedef boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class T> struct push_back<boost::type_of::vector14< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13>, T> { typedef boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class T> struct push_back<boost::type_of::vector15< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14>, T> { typedef boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class T> struct push_back<boost::type_of::vector16< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15>, T> { typedef boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class T> struct push_back<boost::type_of::vector17< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16>, T> { typedef boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class T> struct push_back<boost::type_of::vector18< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17>, T> { typedef boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class T> struct push_back<boost::type_of::vector19< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18>, T> { typedef boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class T> struct push_back<boost::type_of::vector20< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19>, T> { typedef boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class T> struct push_back<boost::type_of::vector21< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20>, T> { typedef boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class T> struct push_back<boost::type_of::vector22< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21>, T> { typedef boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class T> struct push_back<boost::type_of::vector23< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22>, T> { typedef boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class T> struct push_back<boost::type_of::vector24< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23>, T> { typedef boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class T> struct push_back<boost::type_of::vector25< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24>, T> { typedef boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class T> struct push_back<boost::type_of::vector26< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25>, T> { typedef boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class T> struct push_back<boost::type_of::vector27< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26>, T> { typedef boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class T> struct push_back<boost::type_of::vector28< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27>, T> { typedef boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class T> struct push_back<boost::type_of::vector29< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28>, T> { typedef boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class T> struct push_back<boost::type_of::vector30< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29>, T> { typedef boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class T> struct push_back<boost::type_of::vector31< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30>, T> { typedef boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class T> struct push_back<boost::type_of::vector32< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31>, T> { typedef boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class T> struct push_back<boost::type_of::vector33< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32>, T> { typedef boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class T> struct push_back<boost::type_of::vector34< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33>, T> { typedef boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class T> struct push_back<boost::type_of::vector35< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34>, T> { typedef boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class T> struct push_back<boost::type_of::vector36< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35>, T> { typedef boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class T> struct push_back<boost::type_of::vector37< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36>, T> { typedef boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class T> struct push_back<boost::type_of::vector38< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37>, T> { typedef boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class T> struct push_back<boost::type_of::vector39< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38>, T> { typedef boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class T> struct push_back<boost::type_of::vector40< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39>, T> { typedef boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class T> struct push_back<boost::type_of::vector41< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40>, T> { typedef boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class T> struct push_back<boost::type_of::vector42< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41>, T> { typedef boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class T> struct push_back<boost::type_of::vector43< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42>, T> { typedef boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class T> struct push_back<boost::type_of::vector44< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43>, T> { typedef boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class T> struct push_back<boost::type_of::vector45< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44>, T> { typedef boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class T> struct push_back<boost::type_of::vector46< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45>, T> { typedef boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class T> struct push_back<boost::type_of::vector47< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46>, T> { typedef boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class T> struct push_back<boost::type_of::vector48< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47>, T> { typedef boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , T > type; };
template< class P0 , class P1 , class P2 , class P3 , class P4 , class P5 , class P6 , class P7 , class P8 , class P9 , class P10 , class P11 , class P12 , class P13 , class P14 , class P15 , class P16 , class P17 , class P18 , class P19 , class P20 , class P21 , class P22 , class P23 , class P24 , class P25 , class P26 , class P27 , class P28 , class P29 , class P30 , class P31 , class P32 , class P33 , class P34 , class P35 , class P36 , class P37 , class P38 , class P39 , class P40 , class P41 , class P42 , class P43 , class P44 , class P45 , class P46 , class P47 , class P48 , class T> struct push_back<boost::type_of::vector49< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48>, T> { typedef boost::type_of::vector50< P0 , P1 , P2 , P3 , P4 , P5 , P6 , P7 , P8 , P9 , P10 , P11 , P12 , P13 , P14 , P15 , P16 , P17 , P18 , P19 , P20 , P21 , P22 , P23 , P24 , P25 , P26 , P27 , P28 , P29 , P30 , P31 , P32 , P33 , P34 , P35 , P36 , P37 , P38 , P39 , P40 , P41 , P42 , P43 , P44 , P45 , P46 , P47 , P48 , T > type; };
}}

View File

@ -12,5 +12,6 @@
"maintainers": [
"Arkadiy Vertleyb <vertleyb -at- hotmail.com>",
"Peder Holt <peder.holt -at- gmail.com>"
]
],
"cxxstd": "11"
}

54
test/CMakeLists.txt Normal file
View File

@ -0,0 +1,54 @@
# Copyright 2018-2020 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
include(BoostTest OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
if(NOT HAVE_BOOST_TEST)
return()
endif()
macro(typeof_test s1)
string(MAKE_C_IDENTIFIER ${s1} n1)
boost_test(TYPE compile SOURCES ${s1} ${ARGN} COMPILE_DEFINITIONS BOOST_TYPEOF_NATIVE NAME ${n1}_native)
boost_test(TYPE compile SOURCES ${s1} ${ARGN} COMPILE_DEFINITIONS BOOST_TYPEOF_EMULATION NAME ${n1}_emulation)
endmacro()
set(BOOST_TEST_LINK_LIBRARIES Boost::typeof Boost::core Boost::type_traits Boost::static_assert)
set(tests
data_member.cpp
function.cpp
function_binding.cpp
function_ptr.cpp
function_ptr_from_tpl.cpp
function_ref.cpp
member_function.cpp
modifiers.cpp
msvc_typeof_in_lambda.cpp
nested_typedef.cpp
noncopyable.cpp
std.cpp
template_dependent.cpp
template_enum.cpp
template_int.cpp
template_multiword.cpp
template_tpl.cpp
template_type.cpp
type.cpp
)
foreach(test IN LISTS tests)
typeof_test(${test})
endforeach()
boost_test(TYPE run SOURCES odr1.cpp odr2.cpp COMPILE_DEFINITIONS BOOST_TYPEOF_NATIVE NAME odr_native)
boost_test(TYPE run SOURCES odr1.cpp odr2.cpp COMPILE_DEFINITIONS BOOST_TYPEOF_EMULATED NAME odr_emulated)
boost_test(TYPE run SOURCES odr_no_uns1.cpp odr_no_uns2.cpp COMPILE_DEFINITIONS BOOST_TYPEOF_EMULATED NAME odr_no_uns)

View File

@ -0,0 +1,17 @@
# Copyright 2018, 2019 Peter Dimov
# 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
cmake_minimum_required(VERSION 3.5...3.16)
project(cmake_install_test LANGUAGES CXX)
find_package(boost_typeof REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main Boost::typeof)
enable_testing()
add_test(main main)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)

View File

@ -0,0 +1,11 @@
// Copyright 2017, 2021 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/typeof/typeof.hpp>
int main()
{
BOOST_AUTO(x, 5);
return x == 5? 0: 1;
}

View File

@ -0,0 +1,34 @@
# Copyright 2018, 2019 Peter Dimov
# 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
cmake_minimum_required(VERSION 3.5...3.20)
project(cmake_subdir_test LANGUAGES CXX)
add_subdirectory(../.. boostorg/typeof)
set(deps
# Primary dependencies
config
# Secondary dependencies
)
foreach(dep IN LISTS deps)
add_subdirectory(../../../${dep} boostorg/${dep})
endforeach()
# --target check
add_executable(main main.cpp)
target_link_libraries(main Boost::typeof)
enable_testing()
add_test(main main)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)

View File

@ -0,0 +1,11 @@
// Copyright 2017, 2021 Peter Dimov.
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/typeof/typeof.hpp>
int main()
{
BOOST_AUTO(x, 5);
return x == 5? 0: 1;
}

View File

@ -46,6 +46,7 @@ BOOST_STATIC_ASSERT(boost::type_of::test<bitset<10> >::value);
BOOST_STATIC_ASSERT((boost::type_of::test<unary_function<int, int> >::value));
BOOST_STATIC_ASSERT((boost::type_of::test<binary_function<int, int, int> >::value));
#endif//BOOST_NO_CXX98_FUNCTION_BASE
BOOST_STATIC_ASSERT(boost::type_of::test<plus<int> >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<minus<int> >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<multiplies<int> >::value);
@ -61,8 +62,12 @@ BOOST_STATIC_ASSERT(boost::type_of::test<less_equal<int> >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<logical_and<int> >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<logical_or<int> >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<logical_not<int> >::value);
#if BOOST_CXX_VERSION < 202000L
BOOST_STATIC_ASSERT(boost::type_of::test<unary_negate<negate<int> > >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<binary_negate<less<int> > >::value);
#endif
#ifndef BOOST_NO_CXX98_BINDERS
BOOST_STATIC_ASSERT(boost::type_of::test<binder1st<less<int> > >::value);
BOOST_STATIC_ASSERT(boost::type_of::test<binder2nd<less<int> > >::value);

View File

@ -1,122 +0,0 @@
# // (C) Copyright Tobias Schwinger
# //
# // Use modification and distribution are subject to the boost Software License
# // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
# // Preprocess and run this script.
# //
# // Invocation example using the GNU preprocessor:
# //
# // g++ -I$BOOST_ROOT -x c++ preprocess.pl -E |perl
# //
# // or in two steps:
# //
# // g++ -I$BOOST_ROOT -x c++ preprocess.pl -E >temp.pl
# // perl temp.pl
#define die(x) 1
die("ERROR: this script has to be preprocessed, stopped");
#undef die
use strict vars;
use File::Spec updir,curdir,catfile,canonpath,splitpath,file_name_is_absolute;
# // --- Settings
my $up = File::Spec->updir();
# // Relative path to the destination directory.
my $path = File::Spec->catdir($up,$up,$up,'boost','typeof');
my $license = qq@
/\/ Copyright (C) 2005 Arkadiy Vertleyb
/\/ Copyright (C) 2005 Peder Holt
/\/
/\/ Use modification and distribution are subject to the boost Software License,
/\/ Version 1.0. (See http:/\/www.boost.org/LICENSE_1_0.txt).
/\/ Preprocessed code, do not edit manually !
@;
# //---
# // Find this script's directory if run directly from the shell (not piped)
$path = File::Spec->canonpath
( File::Spec->catfile
( File::Spec->file_name_is_absolute($0)
? $0 : (File::Spec->curdir(),$0)
, $up
, File::Spec->splitpath($path)
)
) unless ($0 eq '-');
die
( ($0 eq '-')
? "ERROR: please run from this script's directory, stopped"
: "ERROR: target directoty not found, stopped"
) unless (-d $path);
# // Tidy up the contents and write it to a file
sub write_down(name,contents)
{
my($name,$contents) = @_;
my $filename = $name;
my $fqfname = File::Spec->catfile($path,$filename);
$contents =~ s"(((\n|^)\s*\#[^\n]+)|(\s*\n)){2,}"\n"g; # "
print STDERR "Writing file: '$filename'\n";
open my($file),">$fqfname"
or die "ERROR: unable to open file '$filename' for writing, stopped";
print $file $license;
print $file $contents;
close $file;
}
# // Include external components to ensure they don't end up in the recorded
# // output
#define BOOST_TYPEOF_PP_INCLUDE_EXTERNAL
my $sewer = <<'%--%-EOF-%--%'
#include <boost/typeof/vector.hpp>
#undef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
%--%-EOF-%--%
; $sewer = '';
#define BOOST_TYPEOF_PREPROCESSING_MODE
#define BOOST_TYPEOF_LIMIT_SIZE 50
#define BOOST_TYPEOF_PP_NEXT_SIZE 100
&write_down('vector50.hpp',<<'%--%-EOF-%--%'
#include <boost/typeof/vector.hpp>
%--%-EOF-%--%
);
#undef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
#undef BOOST_TYPEOF_LIMIT_SIZE
#define BOOST_TYPEOF_LIMIT_SIZE 100
#define BOOST_TYPEOF_PP_NEXT_SIZE 149
&write_down('vector100.hpp',<<'%--%-EOF-%--%'
#include <boost/typeof/vector.hpp>
%--%-EOF-%--%
);
#undef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
#undef BOOST_TYPEOF_LIMIT_SIZE
#define BOOST_TYPEOF_LIMIT_SIZE 150
#define BOOST_TYPEOF_PP_NEXT_SIZE 199
&write_down('vector150.hpp',<<'%--%-EOF-%--%'
#include <boost/typeof/vector.hpp>
%--%-EOF-%--%
);
#undef BOOST_TYPEOF_VECTOR_HPP_INCLUDED
#undef BOOST_TYPEOF_LIMIT_SIZE
#define BOOST_TYPEOF_LIMIT_SIZE 200
#define BOOST_TYPEOF_PP_NEXT_SIZE 250
&write_down('vector200.hpp',<<'%--%-EOF-%--%'
#include <boost/typeof/vector.hpp>
%--%-EOF-%--%
);