mirror of
https://github.com/boostorg/fusion.git
synced 2025-12-19 05:22:35 +01:00
Compare commits
20 Commits
boost-1.89
...
optimizati
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a844a55846 | ||
|
|
aae2304699 | ||
|
|
c508ddafea | ||
|
|
37e4fab58b | ||
|
|
5c3600d277 | ||
|
|
5d5ed0bc8d | ||
|
|
8e25d0ef77 | ||
|
|
fb26953fcf | ||
|
|
8a2f444761 | ||
|
|
dfa3650307 | ||
|
|
f9e618d825 | ||
|
|
687491be85 | ||
|
|
aa8342d5cb | ||
|
|
b4afa1c69b | ||
|
|
cb4a4cdde7 | ||
|
|
b03d1e9458 | ||
|
|
c7ba5595fc | ||
|
|
b978b47952 | ||
|
|
9536909a3a | ||
|
|
47070610d0 |
471
.github/workflows/ci.yml
vendored
471
.github/workflows/ci.yml
vendored
@@ -1,471 +0,0 @@
|
|||||||
name: GitHub Actions CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- develop
|
|
||||||
- githubactions*
|
|
||||||
- feature/**
|
|
||||||
- fix/**
|
|
||||||
- pr/**
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
posix:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- name: "TOOLSET=gcc-4.4 CXXSTD=98,0x Job 0"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-4.4"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-4.4"
|
|
||||||
cxxstd: "98,0x"
|
|
||||||
- name: "TOOLSET=gcc-4.6 CXXSTD=03,0x Job 1"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-4.6"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-4.6"
|
|
||||||
cxxstd: "03,0x"
|
|
||||||
- name: "TOOLSET=gcc-4.7 CXXSTD=03,11 Job 2"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-4.7"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-4.7"
|
|
||||||
cxxstd: "03,11"
|
|
||||||
- name: "TOOLSET=gcc-4.8 CXXSTD=03,11,1y Job 3"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-4.8"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-4.8"
|
|
||||||
cxxstd: "03,11,1y"
|
|
||||||
- name: "TOOLSET=gcc-4.9 CXXSTD=03,11,14 Job 4"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-4.9"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-4.9"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=gcc-5 CXXSTD=03,11,14,17 Job 5"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-5"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-5"
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
- name: "TOOLSET=gcc-6 CXXSTD=03,11,14,17 Job 6"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-6"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-6"
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
- name: "TOOLSET=gcc-7 CXXSTD=03,11,14,17 Job 7"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-7"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-7"
|
|
||||||
cxxstd: "03,11,14,17"
|
|
||||||
- name: "TOOLSET=gcc-8 CXXSTD=03,11,14,17,2a Job 8"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "g++-8"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "gcc-8"
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
- name: "TOOLSET=clang-3.5 CXXSTD=03,11,14,1z Job 9"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-3.5"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-3.5"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-3.6 CXXSTD=03,11,14,1z Job 10"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-3.6"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-3.6"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-3.7 CXXSTD=03,11,14,1z Job 11"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-3.7"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-3.7"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-3.8 CXXSTD=03,11,14,1z Job 12"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-3.8"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-3.8"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-3.9 CXXSTD=03,11,14,1z Job 13"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-3.9"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-3.9"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-4.0 CXXSTD=03,11,14,1z Job 14"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-4.0"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
toolset: "clang-4.0"
|
|
||||||
cxxstd: "03,11,14"
|
|
||||||
- name: "TOOLSET=clang-5.0 CXXSTD=03,11,14,17,2a Job 15"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-5.0"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: "xenial"
|
|
||||||
llvm_ver: "5.0"
|
|
||||||
toolset: "clang-5.0"
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
- name: "TOOLSET=clang-6.0 CXXSTD=03,11,14,17,2a Job 16"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-6.0"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: "xenial"
|
|
||||||
llvm_ver: "6.0"
|
|
||||||
toolset: "clang-6.0"
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
- name: "TOOLSET=clang-7 CXXSTD=03,11,14,17,2a Job 17"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: "clang-7"
|
|
||||||
packages_to_remove: ""
|
|
||||||
os: "ubuntu-20.04"
|
|
||||||
container: "ubuntu:16.04"
|
|
||||||
cxx: "g++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: "xenial"
|
|
||||||
llvm_ver: "7"
|
|
||||||
toolset: "clang-7"
|
|
||||||
cxxstd: "03,11,14,17,2a"
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
container: ${{ matrix.container }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check if running in container
|
|
||||||
if: matrix.container != ''
|
|
||||||
run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV
|
|
||||||
- name: If running in container, upgrade packages
|
|
||||||
if: matrix.container != ''
|
|
||||||
run: |
|
|
||||||
apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python ruby cpio gcc-multilib g++-multilib pkgconf python3 ccache libpython-dev
|
|
||||||
sudo apt-add-repository ppa:git-core/ppa
|
|
||||||
sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git
|
|
||||||
python_version=$(python3 -c 'import sys; print("{0.major}.{0.minor}".format(sys.version_info))')
|
|
||||||
sudo wget https://bootstrap.pypa.io/pip/$python_version/get-pip.py
|
|
||||||
sudo python3 get-pip.py
|
|
||||||
sudo /usr/local/bin/pip install cmake
|
|
||||||
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: linux
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
CXX: ${{ matrix.cxx }}
|
|
||||||
SOURCES: ${{ matrix.sources }}
|
|
||||||
LLVM_OS: ${{ matrix.llvm_os }}
|
|
||||||
LLVM_VER: ${{ matrix.llvm_ver }}
|
|
||||||
PACKAGES: ${{ matrix.packages }}
|
|
||||||
PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }}
|
|
||||||
JOB_BUILDTYPE: ${{ matrix.buildtype }}
|
|
||||||
TOOLSET: ${{ matrix.toolset }}
|
|
||||||
CXXSTD: ${{ matrix.cxxstd }}
|
|
||||||
COMPILER: ${{ matrix.compiler }}
|
|
||||||
TRAVIS_BRANCH: ${{ github.base_ref }}
|
|
||||||
TRAVIS_OS_NAME: "linux"
|
|
||||||
run: |
|
|
||||||
echo '==================================> SETUP'
|
|
||||||
echo '==================================> PACKAGES'
|
|
||||||
set -e
|
|
||||||
if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi
|
|
||||||
echo ">>>>> APT: REPO.."
|
|
||||||
for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done
|
|
||||||
|
|
||||||
if test -n "${LLVM_OS}" ; then
|
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
|
||||||
if test -n "${LLVM_VER}" ; then
|
|
||||||
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main"
|
|
||||||
else
|
|
||||||
# Snapshot (i.e. trunk) build of clang
|
|
||||||
sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo ">>>>> APT: UPDATE.."
|
|
||||||
sudo -E apt-get -o Acquire::Retries=3 update
|
|
||||||
if test -n "${SOURCES}" ; then
|
|
||||||
echo ">>>>> APT: INSTALL SOURCES.."
|
|
||||||
for SOURCE in $SOURCES; do
|
|
||||||
sudo -E apt-add-repository ppa:$SOURCE
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
echo ">>>>> APT: INSTALL ${PACKAGES}.."
|
|
||||||
sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES}
|
|
||||||
|
|
||||||
echo '==================================> INSTALL AND COMPILE'
|
|
||||||
set -e
|
|
||||||
export TRAVIS_BUILD_DIR=$(pwd)
|
|
||||||
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
|
|
||||||
export VCS_COMMIT_ID=$GITHUB_SHA
|
|
||||||
export GIT_COMMIT=$GITHUB_SHA
|
|
||||||
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
|
|
||||||
export USER=$(whoami)
|
|
||||||
export CC=${CC:-gcc}
|
|
||||||
export PATH=~/.local/bin:/usr/local/bin:$PATH
|
|
||||||
|
|
||||||
if [ "$JOB_BUILDTYPE" == "boost" ]; then
|
|
||||||
|
|
||||||
echo '==================================> INSTALL'
|
|
||||||
|
|
||||||
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
cd ..
|
|
||||||
git clone --depth 1 -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
git submodule init libs/array
|
|
||||||
git submodule init libs/assert
|
|
||||||
git submodule init libs/bind
|
|
||||||
git submodule init libs/concept_check
|
|
||||||
git submodule init libs/config
|
|
||||||
git submodule init libs/container_hash
|
|
||||||
git submodule init libs/conversion
|
|
||||||
git submodule init libs/core
|
|
||||||
git submodule init libs/detail
|
|
||||||
git submodule init libs/function
|
|
||||||
git submodule init libs/function_types
|
|
||||||
git submodule init libs/functional
|
|
||||||
git submodule init libs/integer
|
|
||||||
git submodule init libs/iterator
|
|
||||||
git submodule init libs/lambda
|
|
||||||
git submodule init libs/move
|
|
||||||
git submodule init libs/mpl
|
|
||||||
git submodule init libs/optional
|
|
||||||
git submodule init libs/predef
|
|
||||||
git submodule init libs/preprocessor
|
|
||||||
git submodule init libs/smart_ptr
|
|
||||||
git submodule init libs/static_assert
|
|
||||||
git submodule init libs/throw_exception
|
|
||||||
git submodule init libs/tuple
|
|
||||||
git submodule init libs/type_index
|
|
||||||
git submodule init libs/type_traits
|
|
||||||
git submodule init libs/typeof
|
|
||||||
git submodule init libs/utility
|
|
||||||
git submodule init libs/describe
|
|
||||||
git submodule init libs/mp11
|
|
||||||
git submodule init libs/headers tools/boost_install tools/build
|
|
||||||
git submodule update
|
|
||||||
rm -rf libs/fusion
|
|
||||||
cp -rp $TRAVIS_BUILD_DIR libs/fusion
|
|
||||||
ln -s $(pwd)/libs/fusion $TRAVIS_BUILD_DIR
|
|
||||||
./bootstrap.sh
|
|
||||||
./b2 headers
|
|
||||||
|
|
||||||
echo '==================================> SCRIPT'
|
|
||||||
|
|
||||||
./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
|
|
||||||
|
|
||||||
fi
|
|
||||||
osx:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- name: "TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,1 Job 18"
|
|
||||||
buildtype: "boost"
|
|
||||||
packages: ""
|
|
||||||
os: "macos-10.15"
|
|
||||||
cxx: "clang++"
|
|
||||||
sources: ""
|
|
||||||
llvm_os: ""
|
|
||||||
llvm_ver: ""
|
|
||||||
xcode_version: 11.7
|
|
||||||
toolset: "clang"
|
|
||||||
compiler: "clang++"
|
|
||||||
cxxstd: "03,11,14,1z"
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Set DEVELOPER_DIR
|
|
||||||
if: matrix.xcode_version != ''
|
|
||||||
run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV
|
|
||||||
- name: Test DEVELOPER_DIR
|
|
||||||
run: echo $DEVELOPER_DIR
|
|
||||||
|
|
||||||
- name: "osx"
|
|
||||||
shell: bash
|
|
||||||
env:
|
|
||||||
CXX: ${{ matrix.cxx }}
|
|
||||||
SOURCES: ${{ matrix.sources }}
|
|
||||||
LLVM_OS: ${{ matrix.llvm_os }}
|
|
||||||
LLVM_VER: ${{ matrix.llvm_ver }}
|
|
||||||
PACKAGES: ${{ matrix.packages }}
|
|
||||||
JOB_BUILDTYPE: ${{ matrix.buildtype }}
|
|
||||||
TOOLSET: ${{ matrix.toolset }}
|
|
||||||
CXXSTD: ${{ matrix.cxxstd }}
|
|
||||||
COMPILER: ${{ matrix.compiler }}
|
|
||||||
TRAVIS_BRANCH: ${{ github.base_ref }}
|
|
||||||
TRAVIS_OS_NAME: "osx"
|
|
||||||
run: |
|
|
||||||
echo '==================================> SETUP'
|
|
||||||
set -e
|
|
||||||
sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck
|
|
||||||
echo '==================================> PACKAGES'
|
|
||||||
echo '==================================> INSTALL AND COMPILE'
|
|
||||||
set -e
|
|
||||||
export TRAVIS_BUILD_DIR=$(pwd)
|
|
||||||
export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')}
|
|
||||||
export VCS_COMMIT_ID=$GITHUB_SHA
|
|
||||||
export GIT_COMMIT=$GITHUB_SHA
|
|
||||||
export REPO_NAME=$(basename $GITHUB_REPOSITORY)
|
|
||||||
export USER=$(whoami)
|
|
||||||
export CC=${CC:-gcc}
|
|
||||||
export PATH=~/.local/bin:/usr/local/bin:$PATH
|
|
||||||
|
|
||||||
if [ "$JOB_BUILDTYPE" == "boost" ]; then
|
|
||||||
|
|
||||||
echo '==================================> INSTALL'
|
|
||||||
|
|
||||||
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
|
|
||||||
cd ..
|
|
||||||
git clone --depth 1 -b $BOOST_BRANCH https://github.com/boostorg/boost.git boost-root
|
|
||||||
cd boost-root
|
|
||||||
git submodule init libs/array
|
|
||||||
git submodule init libs/assert
|
|
||||||
git submodule init libs/bind
|
|
||||||
git submodule init libs/concept_check
|
|
||||||
git submodule init libs/config
|
|
||||||
git submodule init libs/container_hash
|
|
||||||
git submodule init libs/conversion
|
|
||||||
git submodule init libs/core
|
|
||||||
git submodule init libs/detail
|
|
||||||
git submodule init libs/function
|
|
||||||
git submodule init libs/function_types
|
|
||||||
git submodule init libs/functional
|
|
||||||
git submodule init libs/integer
|
|
||||||
git submodule init libs/iterator
|
|
||||||
git submodule init libs/lambda
|
|
||||||
git submodule init libs/move
|
|
||||||
git submodule init libs/mpl
|
|
||||||
git submodule init libs/optional
|
|
||||||
git submodule init libs/predef
|
|
||||||
git submodule init libs/preprocessor
|
|
||||||
git submodule init libs/smart_ptr
|
|
||||||
git submodule init libs/static_assert
|
|
||||||
git submodule init libs/throw_exception
|
|
||||||
git submodule init libs/tuple
|
|
||||||
git submodule init libs/type_index
|
|
||||||
git submodule init libs/type_traits
|
|
||||||
git submodule init libs/typeof
|
|
||||||
git submodule init libs/utility
|
|
||||||
git submodule init libs/describe
|
|
||||||
git submodule init libs/mp11
|
|
||||||
git submodule init libs/headers tools/boost_install tools/build
|
|
||||||
git submodule update
|
|
||||||
rm -rf libs/fusion
|
|
||||||
cp -rp $TRAVIS_BUILD_DIR libs/fusion
|
|
||||||
ln -s $(pwd)/libs/fusion $TRAVIS_BUILD_DIR
|
|
||||||
./bootstrap.sh
|
|
||||||
./b2 headers
|
|
||||||
|
|
||||||
echo '==================================> SCRIPT'
|
|
||||||
|
|
||||||
./b2 -j`(nproc || sysctl -n hw.ncpu) 2> /dev/null` libs/fusion/test toolset=$TOOLSET cxxstd=$CXXSTD
|
|
||||||
|
|
||||||
fi
|
|
||||||
96
.travis.yml
96
.travis.yml
@@ -21,48 +21,32 @@ matrix:
|
|||||||
- env: BOGUS_JOB=true
|
- env: BOGUS_JOB=true
|
||||||
|
|
||||||
include:
|
include:
|
||||||
|
# trusty default (gcc 4.8.4)
|
||||||
|
- os: linux
|
||||||
|
env: TOOLSET=gcc CXXSTD=03,11,1y
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=gcc-4.4 CXXSTD=98,0x
|
env: TOOLSET=gcc-4.4 CXXSTD=98,0x
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- g++-4.4
|
- g++-4.4
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
#- os: linux
|
|
||||||
# dist: xenial
|
|
||||||
# env: TOOLSET=gcc-4.5 CXXSTD=03,0x
|
|
||||||
# addons:
|
|
||||||
# apt:
|
|
||||||
# packages:
|
|
||||||
# - g++-4.5
|
|
||||||
# sources:
|
|
||||||
# - ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=gcc-4.6 CXXSTD=03,0x
|
env: TOOLSET=gcc-4.6 CXXSTD=03,0x
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- g++-4.6
|
- g++-4.6
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=gcc-4.7 CXXSTD=03,11
|
env: TOOLSET=gcc-4.7 CXXSTD=03,11
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- g++-4.7
|
- g++-4.7
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=gcc-4.8 CXXSTD=03,11,1y
|
env: TOOLSET=gcc-4.8 CXXSTD=03,11,1y
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -72,8 +56,7 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=gcc-4.9 CXXSTD=03,11,1y
|
||||||
env: TOOLSET=gcc-4.9 CXXSTD=03,11,14
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@@ -82,8 +65,7 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=gcc-5 CXXSTD=03,11,14,1z
|
||||||
env: TOOLSET=gcc-5 CXXSTD=03,11,14,17
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@@ -92,8 +74,7 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=gcc-6 CXXSTD=03,11,14,1z
|
||||||
env: TOOLSET=gcc-6 CXXSTD=03,11,14,17
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@@ -102,8 +83,7 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=gcc-7 CXXSTD=03,11,14,1z
|
||||||
env: TOOLSET=gcc-7 CXXSTD=03,11,14,17
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@@ -111,93 +91,87 @@ matrix:
|
|||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
|
# trusty default (clang 3.9.0)
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=clang CXXSTD=03,11,14,1z
|
||||||
env: TOOLSET=gcc-8 CXXSTD=03,11,14,17,2a
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- g++-8
|
- libstdc++-4.9-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-3.5 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-3.5 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.5
|
- clang-3.5
|
||||||
|
- libstdc++-4.9-dev
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-3.6 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-3.6 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.6
|
- clang-3.6
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-precise-3.6
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-3.7 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-3.7 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.7
|
- clang-3.7
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-precise-3.7
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-3.8 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-3.8 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.8
|
- clang-3.8
|
||||||
|
- libstdc++-4.9-dev
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-3.9 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-3.9 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.9
|
- clang-3.9
|
||||||
|
- libstdc++-4.9-dev
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-4.0 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang-4.0 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-4.0
|
- clang-4.0
|
||||||
|
- libstdc++-4.9-dev
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-trusty-4.0
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: xenial
|
env: TOOLSET=clang-5.0 CXXSTD=03,11,14,1z,2a
|
||||||
env: TOOLSET=clang-5.0 CXXSTD=03,11,14,17,2a
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-5.0
|
- clang-5.0
|
||||||
|
- libstdc++-4.9-dev
|
||||||
sources:
|
sources:
|
||||||
- llvm-toolchain-xenial-5.0
|
- ubuntu-toolchain-r-test
|
||||||
|
- llvm-toolchain-trusty-5.0
|
||||||
- os: linux
|
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-6.0 CXXSTD=03,11,14,17,2a
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- clang-6.0
|
|
||||||
sources:
|
|
||||||
- llvm-toolchain-xenial-6.0
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
dist: xenial
|
|
||||||
env: TOOLSET=clang-7.0 CXXSTD=03,11,14,17,2a
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- clang-7
|
|
||||||
sources:
|
|
||||||
- llvm-toolchain-xenial-7
|
|
||||||
|
|
||||||
- os: osx
|
- os: osx
|
||||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||||
@@ -237,7 +211,7 @@ install:
|
|||||||
- git submodule init libs/typeof
|
- git submodule init libs/typeof
|
||||||
- git submodule init libs/utility
|
- git submodule init libs/utility
|
||||||
|
|
||||||
- git submodule init libs/headers tools/boost_install tools/build
|
- git submodule init tools/build
|
||||||
- git submodule update
|
- git submodule update
|
||||||
|
|
||||||
- rm -rf libs/fusion
|
- rm -rf libs/fusion
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
# Copyright 2018 Mike Dev
|
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
|
||||||
# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.5...3.20)
|
|
||||||
project(boost_fusion VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
|
||||||
|
|
||||||
add_library(boost_fusion INTERFACE)
|
|
||||||
add_library(Boost::fusion ALIAS boost_fusion)
|
|
||||||
|
|
||||||
target_include_directories(boost_fusion INTERFACE include)
|
|
||||||
|
|
||||||
target_link_libraries(boost_fusion
|
|
||||||
INTERFACE
|
|
||||||
Boost::config
|
|
||||||
Boost::container_hash
|
|
||||||
Boost::core
|
|
||||||
Boost::function_types
|
|
||||||
Boost::mpl
|
|
||||||
Boost::preprocessor
|
|
||||||
Boost::static_assert
|
|
||||||
Boost::tuple
|
|
||||||
Boost::type_traits
|
|
||||||
Boost::typeof
|
|
||||||
Boost::utility
|
|
||||||
Boost::functional
|
|
||||||
Boost::describe
|
|
||||||
Boost::mp11
|
|
||||||
)
|
|
||||||
25
appveyor.yml
25
appveyor.yml
@@ -9,21 +9,17 @@ shallow_clone: true
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||||
TOOLSET: msvc-9.0
|
TOOLSET: msvc-9.0
|
||||||
ADDRMD: 32
|
|
||||||
CXXSTD: latest # fake
|
CXXSTD: latest # fake
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||||
TOOLSET: msvc-10.0
|
TOOLSET: msvc-10.0
|
||||||
ADDRMD: 32
|
|
||||||
CXXSTD: latest # fake
|
CXXSTD: latest # fake
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||||
TOOLSET: msvc-11.0
|
TOOLSET: msvc-11.0
|
||||||
ADDRMD: 32
|
|
||||||
CXXSTD: latest # fake
|
CXXSTD: latest # fake
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013
|
||||||
TOOLSET: msvc-12.0
|
TOOLSET: msvc-12.0
|
||||||
ADDRMD: 32
|
|
||||||
CXXSTD: latest # fake
|
CXXSTD: latest # fake
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
TOOLSET: msvc-14.0
|
TOOLSET: msvc-14.0
|
||||||
@@ -40,12 +36,6 @@ environment:
|
|||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
TOOLSET: msvc-14.1
|
TOOLSET: msvc-14.1
|
||||||
CXXSTD: latest
|
CXXSTD: latest
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
||||||
TOOLSET: clang-win
|
|
||||||
CXXSTD: 14
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
||||||
TOOLSET: clang-win
|
|
||||||
CXXSTD: 17
|
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- set BOOST_BRANCH=develop
|
- set BOOST_BRANCH=develop
|
||||||
@@ -82,10 +72,8 @@ install:
|
|||||||
- git submodule init libs/type_traits
|
- git submodule init libs/type_traits
|
||||||
- git submodule init libs/typeof
|
- git submodule init libs/typeof
|
||||||
- git submodule init libs/utility
|
- git submodule init libs/utility
|
||||||
- git submodule init libs/describe
|
|
||||||
- git submodule init libs/mp11
|
|
||||||
|
|
||||||
- git submodule init libs/headers tools/boost_install tools/build
|
- git submodule init tools/build
|
||||||
- git submodule update
|
- git submodule update
|
||||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\fusion
|
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\fusion
|
||||||
- cmd /c bootstrap
|
- cmd /c bootstrap
|
||||||
@@ -94,5 +82,4 @@ install:
|
|||||||
build: off
|
build: off
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
|
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET% cxxstd=%CXXSTD%
|
||||||
- b2 -j%NUMBER_OF_PROCESSORS% --hash libs/fusion/test toolset=%TOOLSET% cxxstd=%CXXSTD% %ADDRMD%
|
|
||||||
|
|||||||
@@ -23,6 +23,19 @@ various data structures, non-intrusively, as full fledged Fusion sequences.
|
|||||||
#include <boost/fusion/adapted.hpp>
|
#include <boost/fusion/adapted.hpp>
|
||||||
#include <boost/fusion/include/adapted.hpp>
|
#include <boost/fusion/include/adapted.hpp>
|
||||||
|
|
||||||
|
Fusion sequences may also be adapted as fully conforming __mpl__ sequences (see
|
||||||
|
__intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and
|
||||||
|
Fusion. To make Fusion sequences fully conforming __mpl__ sequences, include:
|
||||||
|
|
||||||
|
#include <boost/fusion/mpl.hpp>
|
||||||
|
|
||||||
|
If you want bi-directional adaptation to and from __mpl__ and Fusion, simply
|
||||||
|
include:
|
||||||
|
|
||||||
|
#include <boost/fusion/include/mpl.hpp>
|
||||||
|
|
||||||
|
The header includes all the necessary headers.
|
||||||
|
|
||||||
[section:array Array]
|
[section:array Array]
|
||||||
|
|
||||||
This module provides adapters for arrays. Including the module
|
This module provides adapters for arrays. Including the module
|
||||||
@@ -132,21 +145,6 @@ header makes all __mpl__ sequences fully conforming fusion sequences.
|
|||||||
std::cout << __at_c__<0>(v) << std::endl;
|
std::cout << __at_c__<0>(v) << std::endl;
|
||||||
std::cout << __at_c__<1>(v) << std::endl;
|
std::cout << __at_c__<1>(v) << std::endl;
|
||||||
|
|
||||||
[heading Bi-directional adaptation]
|
|
||||||
|
|
||||||
Fusion sequences may also be adapted as fully conforming __mpl__ sequences (see
|
|
||||||
__intrinsics__). That way, we can have 2-way adaptation to and from __mpl__ and
|
|
||||||
Fusion. To make Fusion sequences fully conforming __mpl__ sequences, include:
|
|
||||||
|
|
||||||
#include <boost/fusion/mpl.hpp>
|
|
||||||
|
|
||||||
If you want bi-directional adaptation to and from __mpl__ and Fusion, simply
|
|
||||||
include:
|
|
||||||
|
|
||||||
#include <boost/fusion/include/mpl.hpp>
|
|
||||||
|
|
||||||
The header includes all the necessary headers.
|
|
||||||
|
|
||||||
[heading See also]
|
[heading See also]
|
||||||
|
|
||||||
__mpl__
|
__mpl__
|
||||||
|
|||||||
@@ -1016,8 +1016,8 @@ __note_ref_wrappers__, __fusion_pair__
|
|||||||
|
|
||||||
[section Tiers]
|
[section Tiers]
|
||||||
|
|
||||||
Tiers are sequences, where all elements are reference types. They are
|
Tiers are sequences, where all elements are non-const reference types. They
|
||||||
constructed with a call to a couple of /tie/ function templates. The
|
are constructed with a call to a couple of /tie/ function templates. The
|
||||||
succeeding sections document the various /tier/ flavors.
|
succeeding sections document the various /tier/ flavors.
|
||||||
|
|
||||||
* __list_tie__
|
* __list_tie__
|
||||||
@@ -2005,7 +2005,7 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
|||||||
as_map(__make_vector__(
|
as_map(__make_vector__(
|
||||||
__fusion_make_pair__<int>('X')
|
__fusion_make_pair__<int>('X')
|
||||||
, __fusion_make_pair__<double>("Men")))
|
, __fusion_make_pair__<double>("Men")))
|
||||||
|
|
||||||
// from associative sequence
|
// from associative sequence
|
||||||
namespace ns
|
namespace ns
|
||||||
{
|
{
|
||||||
@@ -2222,7 +2222,7 @@ __fusion_pair__s. There may be no duplicate __fusion_pair__ key types.
|
|||||||
result_of::as_map<__vector__<
|
result_of::as_map<__vector__<
|
||||||
__fusion_pair__<int, char>
|
__fusion_pair__<int, char>
|
||||||
, __fusion_pair__<double, std::string> > >::type
|
, __fusion_pair__<double, std::string> > >::type
|
||||||
|
|
||||||
// from associative sequence
|
// from associative sequence
|
||||||
namespace ns
|
namespace ns
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -130,7 +130,6 @@
|
|||||||
[def __reverse_view__ [link fusion.view.reverse_view `reverse_view`]]
|
[def __reverse_view__ [link fusion.view.reverse_view `reverse_view`]]
|
||||||
[def __zip_view__ [link fusion.view.zip_view `zip_view`]]
|
[def __zip_view__ [link fusion.view.zip_view `zip_view`]]
|
||||||
[def __flatten_view__ [link fusion.view.flatten_view `flatten_view`]]
|
[def __flatten_view__ [link fusion.view.flatten_view `flatten_view`]]
|
||||||
[def __identity_view__ [link fusion.view.identity_view `identity_view`]]
|
|
||||||
|
|
||||||
[def __array__ [link fusion.adapted.array array]]
|
[def __array__ [link fusion.adapted.array array]]
|
||||||
[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]]
|
[def __std_pair__ [link fusion.adapted.std__pair `std::pair`]]
|
||||||
|
|||||||
@@ -163,7 +163,6 @@
|
|||||||
<dt><span class="section"><a href="fusion/view/zip_view.html">zip_view</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/zip_view.html">zip_view</a></span></dt>
|
||||||
<dt><span class="section"><a href="fusion/view/transform_view.html">transform_view</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/transform_view.html">transform_view</a></span></dt>
|
||||||
<dt><span class="section"><a href="fusion/view/reverse_view.html">reverse_view</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/reverse_view.html">reverse_view</a></span></dt>
|
||||||
<dt><span class="section"><a href="fusion/view/identity_view.html">identity_view</a></span></dt>
|
|
||||||
<dt><span class="section"><a href="fusion/view/nview.html">nview</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/nview.html">nview</a></span></dt>
|
||||||
<dt><span class="section"><a href="fusion/view/repetitive_view.html">repetitive_view</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/repetitive_view.html">repetitive_view</a></span></dt>
|
||||||
<dt><span class="section"><a href="fusion/view/flatten_view.html">flatten_view</a></span></dt>
|
<dt><span class="section"><a href="fusion/view/flatten_view.html">flatten_view</a></span></dt>
|
||||||
|
|||||||
@@ -254,7 +254,6 @@ expressions must be valid:
|
|||||||
* __iterator_range__ iterator (where adapted iterators are __associative_iterator__\ s)
|
* __iterator_range__ iterator (where adapted iterators are __associative_iterator__\ s)
|
||||||
* __joint_view__ iterator (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
|
* __joint_view__ iterator (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
|
||||||
* __reverse_view__ iterator (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
|
* __reverse_view__ iterator (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
|
||||||
* __transform_view__ iterator (where adapted sequence is an __associative_sequence__ and a __forward_sequence__)
|
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ link against.
|
|||||||
* single_view
|
* single_view
|
||||||
* transform_view
|
* transform_view
|
||||||
* zip_view
|
* zip_view
|
||||||
* identity_view
|
|
||||||
* container
|
* container
|
||||||
* deque
|
* deque
|
||||||
* list
|
* list
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ Bidirectional Sequence the following must be met:
|
|||||||
[[`__back__(s)`] [Any type] [] [Constant]]
|
[[`__back__(s)`] [Any type] [] [Constant]]
|
||||||
[[`__back__(s) = o`] [Any type] [`s` is mutable and
|
[[`__back__(s) = o`] [Any type] [`s` is mutable and
|
||||||
`e = o`, where `e`
|
`e = o`, where `e`
|
||||||
is the last element
|
is the first element
|
||||||
in the sequence, is
|
in the sequence, is
|
||||||
a valid expression.] [Constant]]
|
a valid expression.] [Constant]]
|
||||||
]
|
]
|
||||||
@@ -237,14 +237,14 @@ any Random Access Sequence the following must be met:
|
|||||||
[[`__at_c__<N>(s)`] [Any type] [] [Constant]]
|
[[`__at_c__<N>(s)`] [Any type] [] [Constant]]
|
||||||
[[`__at_c__<N>(s) = o`] [Any type] [`s` is mutable and
|
[[`__at_c__<N>(s) = o`] [Any type] [`s` is mutable and
|
||||||
`e = o`, where `e`
|
`e = o`, where `e`
|
||||||
is the N-th element from the beginning
|
is the first element
|
||||||
of the sequence, is
|
in the sequence, is
|
||||||
a valid expression.] [Constant]]
|
a valid expression.] [Constant]]
|
||||||
[[`__at__<M>(s)`] [Any type] [] [Constant]]
|
[[`__at__<M>(s)`] [Any type] [] [Constant]]
|
||||||
[[`__at__<M>(s) = o`] [Any type] [`s` is mutable and
|
[[`__at__<M>(s) = o`] [Any type] [`s` is mutable and
|
||||||
`e = o`, where `e`
|
`e = o`, where `e`
|
||||||
is the M-th element from the beginning
|
is the first element
|
||||||
of the sequence, is
|
in the sequence, is
|
||||||
a valid expression.] [Constant]]
|
a valid expression.] [Constant]]
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -321,7 +321,8 @@ For any Associative Sequence the following expressions must be valid:
|
|||||||
[[`__at_key__<K>(s)`] [Any type] [] [Constant]]
|
[[`__at_key__<K>(s)`] [Any type] [] [Constant]]
|
||||||
[[`__at_key__<K>(s) = o`] [Any type] [`s` is mutable and
|
[[`__at_key__<K>(s) = o`] [Any type] [`s` is mutable and
|
||||||
`e = o`, where `e`
|
`e = o`, where `e`
|
||||||
is the element associated with K, is
|
is the first element
|
||||||
|
in the sequence, is
|
||||||
a valid expression.] [Constant]]
|
a valid expression.] [Constant]]
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -360,7 +361,6 @@ you can use `__result_of_value_at_key__<S, K>`.]
|
|||||||
* __iterator_range__ (where adapted iterators are __associative_iterator__\ s)
|
* __iterator_range__ (where adapted iterators are __associative_iterator__\ s)
|
||||||
* __joint_view__ (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
|
* __joint_view__ (where adapted sequences are __associative_sequence__\ s and __forward_sequence__\ s)
|
||||||
* __reverse_view__ (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
|
* __reverse_view__ (where adapted sequence is an __associative_sequence__ and a __bidirectional_sequence__)
|
||||||
* __transform_view__ (where adapted sequence is an __associative_sequence__ and a __forward_sequence__)
|
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
@@ -714,11 +714,11 @@ Returns the M-th element from the beginning of the sequence.
|
|||||||
[heading Synopsis]
|
[heading Synopsis]
|
||||||
|
|
||||||
template <typename M, typename Sequence>
|
template <typename M, typename Sequence>
|
||||||
typename __result_of_at__<Sequence, M>::type
|
typename __result_of_at__<Sequence, N>::type
|
||||||
at(Sequence& seq);
|
at(Sequence& seq);
|
||||||
|
|
||||||
template <typename M, typename Sequence>
|
template <typename M, typename Sequence>
|
||||||
typename __result_of_at__<Sequence const, M>::type
|
typename __result_of_at__<Sequence const, N>::type
|
||||||
at(Sequence const& seq);
|
at(Sequence const& seq);
|
||||||
|
|
||||||
[heading Parameters]
|
[heading Parameters]
|
||||||
@@ -1522,16 +1522,6 @@ each element. Analogously, the global `operator>>` has been overloaded
|
|||||||
to extract __sequence__(s) from generic input streams by recursively
|
to extract __sequence__(s) from generic input streams by recursively
|
||||||
calling `operator>>` for each element.
|
calling `operator>>` for each element.
|
||||||
|
|
||||||
Please note that, to display your adapted types via fusion IO system,
|
|
||||||
corresponding overloaded operators should be introduced to same namespace
|
|
||||||
of the type.
|
|
||||||
|
|
||||||
namespace your_awesome_library
|
|
||||||
{
|
|
||||||
using boost::fusion::operators::operator>>; // for input
|
|
||||||
using boost::fusion::operators::operator<<; // for output
|
|
||||||
...
|
|
||||||
|
|
||||||
The default delimiter between the elements is space, and the __sequence__
|
The default delimiter between the elements is space, and the __sequence__
|
||||||
is enclosed in parenthesis. For Example:
|
is enclosed in parenthesis. For Example:
|
||||||
|
|
||||||
|
|||||||
81
doc/view.qbk
81
doc/view.qbk
@@ -1,7 +1,6 @@
|
|||||||
[/==============================================================================
|
[/==============================================================================
|
||||||
Copyright (C) 2001-2011 Joel de Guzman
|
Copyright (C) 2001-2011 Joel de Guzman
|
||||||
Copyright (C) 2006 Dan Marsden
|
Copyright (C) 2006 Dan Marsden
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
|
|
||||||
Use, modification and distribution is subject to the Boost Software
|
Use, modification and distribution is subject to the Boost Software
|
||||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@@ -94,9 +93,10 @@ presents only those elements for which its predicate evaluates to
|
|||||||
[heading Template parameters]
|
[heading Template parameters]
|
||||||
|
|
||||||
[table
|
[table
|
||||||
[[Parameter] [Description] [Default]]
|
[[Parameter] [Description] [Default]]
|
||||||
[[`Sequence`] [A __forward_sequence__] []]
|
[[`Sequence`] [A __forward_sequence__] []]
|
||||||
[[`Pred`] [A unary __mpl_lambda_expression__] []]
|
[[`Pred`] [Unary Metafunction
|
||||||
|
returning an `mpl::bool_`] []]
|
||||||
]
|
]
|
||||||
|
|
||||||
[heading Model of]
|
[heading Model of]
|
||||||
@@ -271,7 +271,7 @@ defined in the implemented models.
|
|||||||
[heading Description]
|
[heading Description]
|
||||||
|
|
||||||
`zip_view` presents a view which iterates over a collection of __sequence__(s) in parallel. A `zip_view`
|
`zip_view` presents a view which iterates over a collection of __sequence__(s) in parallel. A `zip_view`
|
||||||
is constructed from a __sequence__ of references to the component `__sequence__`s.
|
is constructed from a __sequence__ of references to the component __sequence__s.
|
||||||
|
|
||||||
[heading Header]
|
[heading Header]
|
||||||
|
|
||||||
@@ -287,7 +287,7 @@ is constructed from a __sequence__ of references to the component `__sequence__`
|
|||||||
|
|
||||||
[table
|
[table
|
||||||
[[Parameter] [Description] [Default]]
|
[[Parameter] [Description] [Default]]
|
||||||
[[`Sequences`] [A __forward_sequence__ of references to other Fusion `__sequence__`s] []]
|
[[`Sequences`] [A __forward_sequence__ of references to other Fusion __sequence__s] []]
|
||||||
]
|
]
|
||||||
|
|
||||||
[heading Model of]
|
[heading Model of]
|
||||||
@@ -309,7 +309,7 @@ defined in __forward_sequence__.
|
|||||||
|
|
||||||
[table
|
[table
|
||||||
[[Expression] [Semantics]]
|
[[Expression] [Semantics]]
|
||||||
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component `__sequence__`s.]]
|
[[`ZV(s)`] [Creates a `zip_view` given a sequence of references to the component __sequence__s.]]
|
||||||
[[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]]
|
[[`ZV(zv1)`] [Copy constructs a `zip_view` from another `zip_view`, `zv`.]]
|
||||||
[[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]]
|
[[`zv1 = zv2`] [Assigns to a `zip_view`, `zv`, from another `zip_view`, `zv2`.]]
|
||||||
]
|
]
|
||||||
@@ -329,7 +329,9 @@ defined in __forward_sequence__.
|
|||||||
The unary version of `transform_view` presents a view of its underlying
|
The unary version of `transform_view` presents a view of its underlying
|
||||||
sequence given a unary function object or function pointer. The binary
|
sequence given a unary function object or function pointer. The binary
|
||||||
version of `transform_view` presents a view of 2 underlying sequences,
|
version of `transform_view` presents a view of 2 underlying sequences,
|
||||||
given a binary function object or function pointer.
|
given a binary function object or function pointer. The `transform_view`
|
||||||
|
inherits the traversal characteristics (see __traversal_concept__) of
|
||||||
|
its underlying sequence or sequences.
|
||||||
|
|
||||||
[heading Header]
|
[heading Header]
|
||||||
|
|
||||||
@@ -363,8 +365,7 @@ given a binary function object or function pointer.
|
|||||||
|
|
||||||
* __forward_sequence__, __bidirectional_sequence__ or
|
* __forward_sequence__, __bidirectional_sequence__ or
|
||||||
__random_access_sequence__ depending on the traversal characteristics (see
|
__random_access_sequence__ depending on the traversal characteristics (see
|
||||||
__traversal_concept__) of its underlying sequence or sequences.
|
__traversal_concept__) of its underlying sequence.
|
||||||
* __associative_sequence__ if underlying sequence implements the __associative_sequence__ model(available only with unary version of `transform_view`).
|
|
||||||
|
|
||||||
[variablelist Notation
|
[variablelist Notation
|
||||||
[[`TV`] [A `transform_view` type]]
|
[[`TV`] [A `transform_view` type]]
|
||||||
@@ -381,7 +382,9 @@ __traversal_concept__) of its underlying sequence or sequences.
|
|||||||
[heading Expression Semantics]
|
[heading Expression Semantics]
|
||||||
|
|
||||||
Semantics of an expression is defined only where it differs from, or is not
|
Semantics of an expression is defined only where it differs from, or is not
|
||||||
defined in the implemented models.
|
defined in __forward_sequence__, __bidirectional_sequence__ or
|
||||||
|
__random_access_sequence__ depending on the traversal characteristics (see
|
||||||
|
__traversal_concept__) of its underlying sequence or sequences.
|
||||||
|
|
||||||
[table
|
[table
|
||||||
[[Expression] [Semantics]]
|
[[Expression] [Semantics]]
|
||||||
@@ -665,60 +668,4 @@ defined in __forward_sequence__.
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[section identity_view]
|
|
||||||
|
|
||||||
[heading Description]
|
|
||||||
|
|
||||||
`identity_view` presents underlying sequence unchanged.
|
|
||||||
|
|
||||||
[heading Header]
|
|
||||||
|
|
||||||
#include <boost/fusion/view/identity_view.hpp>
|
|
||||||
#include <boost/fusion/include/identity_view.hpp>
|
|
||||||
|
|
||||||
[heading Synopsis]
|
|
||||||
|
|
||||||
template <typename Sequence>
|
|
||||||
struct identity_view;
|
|
||||||
|
|
||||||
[heading Template parameters]
|
|
||||||
|
|
||||||
[table
|
|
||||||
[[Parameter] [Description] [Default]]
|
|
||||||
[[`Sequence`] [A __forward_sequence__] []]
|
|
||||||
]
|
|
||||||
|
|
||||||
[heading Model of]
|
|
||||||
|
|
||||||
* A model of __forward_sequence__ if `Sequence` is a __forward_sequence__ else, __bidirectional_sequence__ if `Sequence` is a __bidirectional_sequence__
|
|
||||||
else, __random_access_sequence__ if `Sequence` is a __random_access_sequence__.
|
|
||||||
* __associative_sequence__ if `Sequence` implements the __associative_sequence__ model.
|
|
||||||
|
|
||||||
[variablelist Notation
|
|
||||||
[[`IV`] [An `identity_view` type]]
|
|
||||||
[[`s`] [An instance of `Sequence`]]
|
|
||||||
[[`iv`, `iv2`] [Instances of `identity_view`]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[heading Expression Semantics]
|
|
||||||
|
|
||||||
Semantics of an expression is defined only where it differs from, or is not
|
|
||||||
defined in the implemented models.
|
|
||||||
|
|
||||||
[table
|
|
||||||
[[Expression] [Semantics]]
|
|
||||||
[[`IV(s)`] [Creates an `identity_view` given sequence, `s`.]]
|
|
||||||
[[`IV(iv)`] [Copy constructs an `identity_view` from another `identity_view`, `iv`.]]
|
|
||||||
[[`iv = iv2`] [Assigns to an `identity_view`, `iv`, from another `identity_view`, `iv2`.]]
|
|
||||||
]
|
|
||||||
|
|
||||||
[heading Example]
|
|
||||||
typedef __vector__<int, short, double> vector_type;
|
|
||||||
vector_type vec(2, 5, 3.3);
|
|
||||||
|
|
||||||
__identity_view__<vector_type> identity(vec);
|
|
||||||
std::cout << identity << std::endl; // (2 5 3.3)
|
|
||||||
|
|
||||||
[endsect]
|
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
#include <boost/mpl/max.hpp>
|
#include <boost/mpl/max.hpp>
|
||||||
#include <boost/mpl/next.hpp>
|
#include <boost/mpl/next.hpp>
|
||||||
|
|
||||||
#include <boost/core/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,10 @@
|
|||||||
#include <boost/preprocessor/empty.hpp>
|
#include <boost/preprocessor/empty.hpp>
|
||||||
#include <boost/preprocessor/control/if.hpp>
|
#include <boost/preprocessor/control/if.hpp>
|
||||||
#include <boost/preprocessor/comparison/less.hpp>
|
#include <boost/preprocessor/comparison/less.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/is_const.hpp>
|
||||||
|
#include <boost/type_traits/add_const.hpp>
|
||||||
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
|
||||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||||
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
||||||
|
|||||||
@@ -15,6 +15,9 @@
|
|||||||
#include <boost/preprocessor/cat.hpp>
|
#include <boost/preprocessor/cat.hpp>
|
||||||
#include <boost/preprocessor/empty.hpp>
|
#include <boost/preprocessor/empty.hpp>
|
||||||
#include <boost/preprocessor/control/if.hpp>
|
#include <boost/preprocessor/control/if.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/is_const.hpp>
|
||||||
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
|
||||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||||
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
#include <boost/preprocessor/tuple/elem.hpp>
|
#include <boost/preprocessor/tuple/elem.hpp>
|
||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
|
#include <boost/type_traits/add_const.hpp>
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
|
||||||
|
|
||||||
#include <boost/typeof/typeof.hpp>
|
#include <boost/typeof/typeof.hpp>
|
||||||
|
|
||||||
@@ -83,8 +83,20 @@
|
|||||||
typedef \
|
typedef \
|
||||||
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||||
typename) \
|
typename) \
|
||||||
deduced_attr_type::type type; \
|
boost::remove_const< \
|
||||||
typedef type const_type;
|
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||||
|
typename) \
|
||||||
|
deduced_attr_type::type \
|
||||||
|
>::type type; \
|
||||||
|
\
|
||||||
|
typedef \
|
||||||
|
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||||
|
typename) \
|
||||||
|
boost::add_const< \
|
||||||
|
BOOST_PP_EXPR_IF(BOOST_FUSION_ADAPT_IS_TPL(TEMPLATE_PARAMS_SEQ), \
|
||||||
|
typename) \
|
||||||
|
deduced_attr_type::type \
|
||||||
|
>::type const_type;
|
||||||
|
|
||||||
#define BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE( \
|
#define BOOST_FUSION_ADT_ATTRIBUTE_GIVENTYPE( \
|
||||||
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
NAME_SEQ, ATTRIBUTE, ATTRIBUTE_TUPLE_SIZE, PREFIX, TEMPLATE_PARAMS_SEQ) \
|
||||||
|
|||||||
@@ -18,11 +18,6 @@
|
|||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct random_access_traversal_tag;
|
struct random_access_traversal_tag;
|
||||||
@@ -107,13 +102,13 @@ namespace boost { namespace fusion
|
|||||||
return type();
|
return type();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
array_iterator<Array, Pos>& operator=(array_iterator<Array, Pos> const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -45,10 +45,6 @@ namespace boost { namespace fusion
|
|||||||
template <typename Cons>
|
template <typename Cons>
|
||||||
struct boost_tuple_iterator_identity;
|
struct boost_tuple_iterator_identity;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
template <typename Cons = tuples::null_type>
|
template <typename Cons = tuples::null_type>
|
||||||
struct boost_tuple_iterator
|
struct boost_tuple_iterator
|
||||||
: iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag>
|
: iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag>
|
||||||
@@ -147,10 +143,11 @@ namespace boost { namespace fusion
|
|||||||
struct equal_to
|
struct equal_to
|
||||||
: is_same<typename I1::identity, typename I2::identity>
|
: is_same<typename I1::identity, typename I2::identity>
|
||||||
{};
|
{};
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
boost_tuple_iterator& operator= (boost_tuple_iterator const&);
|
||||||
};
|
};
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <typename Null>
|
template <typename Null>
|
||||||
struct boost_tuple_null_iterator
|
struct boost_tuple_null_iterator
|
||||||
|
|||||||
@@ -19,11 +19,6 @@
|
|||||||
#include <boost/fusion/iterator/iterator_facade.hpp>
|
#include <boost/fusion/iterator/iterator_facade.hpp>
|
||||||
#include <boost/fusion/adapted/std_array/detail/array_size.hpp>
|
#include <boost/fusion/adapted/std_array/detail/array_size.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct random_access_traversal_tag;
|
struct random_access_traversal_tag;
|
||||||
@@ -104,11 +99,11 @@ namespace boost { namespace fusion
|
|||||||
return type();
|
return type();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
std_array_iterator<Array, Pos>& operator=(std_array_iterator<Array, Pos> const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -17,11 +17,6 @@
|
|||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct random_access_traversal_tag;
|
struct random_access_traversal_tag;
|
||||||
@@ -112,10 +107,6 @@ namespace boost { namespace fusion
|
|||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
#include <boost/preprocessor/empty.hpp>
|
#include <boost/preprocessor/empty.hpp>
|
||||||
#include <boost/preprocessor/control/iif.hpp>
|
#include <boost/preprocessor/control/iif.hpp>
|
||||||
#include <boost/preprocessor/comparison/less.hpp>
|
#include <boost/preprocessor/comparison/less.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/is_const.hpp>
|
||||||
|
#include <boost/type_traits/add_const.hpp>
|
||||||
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
|
||||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||||
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
||||||
|
|||||||
@@ -18,6 +18,10 @@
|
|||||||
#include <boost/preprocessor/comparison/less.hpp>
|
#include <boost/preprocessor/comparison/less.hpp>
|
||||||
#include <boost/preprocessor/seq/seq.hpp>
|
#include <boost/preprocessor/seq/seq.hpp>
|
||||||
#include <boost/preprocessor/variadic/to_seq.hpp>
|
#include <boost/preprocessor/variadic/to_seq.hpp>
|
||||||
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
#include <boost/type_traits/is_const.hpp>
|
||||||
|
#include <boost/type_traits/add_const.hpp>
|
||||||
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
|
||||||
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
#include <boost/fusion/adapted/struct/detail/extension.hpp>
|
||||||
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
#include <boost/fusion/adapted/struct/detail/adapt_base.hpp>
|
||||||
|
|||||||
@@ -34,9 +34,7 @@
|
|||||||
#include <boost/mpl/tag.hpp>
|
#include <boost/mpl/tag.hpp>
|
||||||
#include <boost/mpl/eval_if.hpp>
|
#include <boost/mpl/eval_if.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
#include <boost/type_traits/is_const.hpp>
|
|
||||||
#include <boost/type_traits/add_const.hpp>
|
#include <boost/type_traits/add_const.hpp>
|
||||||
#include <boost/type_traits/add_reference.hpp>
|
|
||||||
|
|
||||||
#include <boost/typeof/typeof.hpp>
|
#include <boost/typeof/typeof.hpp>
|
||||||
|
|
||||||
@@ -143,7 +141,7 @@
|
|||||||
I, \
|
I, \
|
||||||
ATTRIBUTE)
|
ATTRIBUTE)
|
||||||
|
|
||||||
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1935)
|
#ifdef BOOST_MSVC
|
||||||
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM(R,_,ELEM) \
|
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAM(R,_,ELEM) \
|
||||||
typedef ELEM ELEM;
|
typedef ELEM ELEM;
|
||||||
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL(SEQ) \
|
# define BOOST_FUSION_ADAPT_STRUCT_MSVC_REDEFINE_TEMPLATE_PARAMS_IMPL(SEQ) \
|
||||||
|
|||||||
@@ -326,9 +326,6 @@
|
|||||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_ITERATOR_IMPL_IMPL( \
|
||||||
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
NAME, ATTRIBUTES_SEQ, ATTRIBUTES_SEQ_SIZE) \
|
||||||
\
|
\
|
||||||
BOOST_FUSION_PUSH_WARNINGS \
|
|
||||||
BOOST_FUSION_DISABLE_MSVC_WARNING(4512) \
|
|
||||||
\
|
|
||||||
template <typename boost_fusion_detail_Seq, int N> \
|
template <typename boost_fusion_detail_Seq, int N> \
|
||||||
struct BOOST_FUSION_ITERATOR_NAME(NAME) \
|
struct BOOST_FUSION_ITERATOR_NAME(NAME) \
|
||||||
: boost::fusion::iterator_facade< \
|
: boost::fusion::iterator_facade< \
|
||||||
@@ -421,10 +418,7 @@
|
|||||||
return type(it.seq_); \
|
return type(it.seq_); \
|
||||||
} \
|
} \
|
||||||
}; \
|
}; \
|
||||||
}; \
|
};
|
||||||
\
|
|
||||||
BOOST_FUSION_POP_WARNINGS \
|
|
||||||
/**/
|
|
||||||
|
|
||||||
|
|
||||||
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
#define BOOST_FUSION_DEFINE_STRUCT_INLINE_MEMBERS_IMPL_IMPL( \
|
||||||
|
|||||||
@@ -19,9 +19,6 @@
|
|||||||
\
|
\
|
||||||
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
|
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_BEGIN(NAMESPACE_SEQ) \
|
||||||
\
|
\
|
||||||
BOOST_FUSION_PUSH_WARNINGS \
|
|
||||||
BOOST_FUSION_DISABLE_MSVC_WARNING(4512) \
|
|
||||||
\
|
|
||||||
struct NAME \
|
struct NAME \
|
||||||
{ \
|
{ \
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED \
|
||||||
@@ -30,9 +27,10 @@
|
|||||||
{} \
|
{} \
|
||||||
\
|
\
|
||||||
WRAPPED_TYPE& obj; \
|
WRAPPED_TYPE& obj; \
|
||||||
}; \
|
|
||||||
\
|
\
|
||||||
BOOST_FUSION_POP_WARNINGS \
|
private: \
|
||||||
|
NAME& operator= (NAME const&); \
|
||||||
|
}; \
|
||||||
\
|
\
|
||||||
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
|
BOOST_FUSION_ADAPT_STRUCT_NAMESPACE_DEFINITION_END(NAMESPACE_SEQ)
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace detail
|
|||||||
template <typename First, typename Last, typename F>
|
template <typename First, typename Last, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline void
|
inline void
|
||||||
for_each_linear(First const& first, Last const& last, F& f, mpl::false_)
|
for_each_linear(First const& first, Last const& last, F const& f, mpl::false_)
|
||||||
{
|
{
|
||||||
f(*first);
|
f(*first);
|
||||||
detail::for_each_linear(fusion::next(first), last, f,
|
detail::for_each_linear(fusion::next(first), last, f,
|
||||||
@@ -41,7 +41,7 @@ namespace detail
|
|||||||
template <typename Sequence, typename F, typename Tag>
|
template <typename Sequence, typename F, typename Tag>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline void
|
inline void
|
||||||
for_each_dispatch(Sequence& seq, F& f, Tag)
|
for_each_dispatch(Sequence& seq, F const& f, Tag)
|
||||||
{
|
{
|
||||||
detail::for_each_linear(
|
detail::for_each_linear(
|
||||||
fusion::begin(seq)
|
fusion::begin(seq)
|
||||||
@@ -57,7 +57,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
template<typename I0, typename F>
|
template<typename I0, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static void call(I0 const& i0, F& f)
|
static void call(I0 const& i0, F const& f)
|
||||||
{
|
{
|
||||||
f(*i0);
|
f(*i0);
|
||||||
typedef typename result_of::next<I0>::type I1;
|
typedef typename result_of::next<I0>::type I1;
|
||||||
@@ -78,7 +78,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
template<typename I0, typename F>
|
template<typename I0, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static void call(I0 const& i0, F& f)
|
static void call(I0 const& i0, F const& f)
|
||||||
{
|
{
|
||||||
f(*i0);
|
f(*i0);
|
||||||
typedef typename result_of::next<I0>::type I1;
|
typedef typename result_of::next<I0>::type I1;
|
||||||
@@ -95,7 +95,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
template<typename I0, typename F>
|
template<typename I0, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static void call(I0 const& i0, F& f)
|
static void call(I0 const& i0, F const& f)
|
||||||
{
|
{
|
||||||
f(*i0);
|
f(*i0);
|
||||||
typedef typename result_of::next<I0>::type I1;
|
typedef typename result_of::next<I0>::type I1;
|
||||||
@@ -109,7 +109,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
template<typename I0, typename F>
|
template<typename I0, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static void call(I0 const& i0, F& f)
|
static void call(I0 const& i0, F const& f)
|
||||||
{
|
{
|
||||||
f(*i0);
|
f(*i0);
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ namespace detail
|
|||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline void
|
inline void
|
||||||
for_each_dispatch(Sequence& seq, F& f, random_access_traversal_tag)
|
for_each_dispatch(Sequence& seq, F const& f, random_access_traversal_tag)
|
||||||
{
|
{
|
||||||
typedef typename result_of::begin<Sequence>::type begin;
|
typedef typename result_of::begin<Sequence>::type begin;
|
||||||
typedef typename result_of::end<Sequence>::type end;
|
typedef typename result_of::end<Sequence>::type end;
|
||||||
@@ -138,7 +138,7 @@ namespace detail
|
|||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline void
|
inline void
|
||||||
for_each(Sequence& seq, F& f, mpl::false_) // unsegmented implementation
|
for_each(Sequence& seq, F const& f, mpl::false_) // unsegmented implementation
|
||||||
{
|
{
|
||||||
detail::for_each_dispatch(seq, f, typename traits::category_of<Sequence>::type());
|
detail::for_each_dispatch(seq, f, typename traits::category_of<Sequence>::type());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,6 @@
|
|||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
template <typename Fun>
|
template <typename Fun>
|
||||||
struct segmented_fold_fun
|
struct segmented_fold_fun
|
||||||
{
|
{
|
||||||
@@ -41,9 +37,6 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The default implementation of this lives in detail/fold.hpp
|
// The default implementation of this lives in detail/fold.hpp
|
||||||
template <typename Sequence, typename State, typename Fun, bool IsSequence, bool IsSegmented>
|
template <typename Sequence, typename State, typename Fun, bool IsSequence, bool IsSegmented>
|
||||||
|
|||||||
@@ -13,22 +13,17 @@
|
|||||||
#include <boost/fusion/algorithm/iteration/for_each_fwd.hpp>
|
#include <boost/fusion/algorithm/iteration/for_each_fwd.hpp>
|
||||||
#include <boost/fusion/support/segmented_fold_until.hpp>
|
#include <boost/fusion/support/segmented_fold_until.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
template <typename Fun>
|
template <typename Fun>
|
||||||
struct segmented_for_each_fun
|
struct segmented_for_each_fun
|
||||||
{
|
{
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
explicit segmented_for_each_fun(Fun& f)
|
explicit segmented_for_each_fun(Fun const& f)
|
||||||
: fun(f)
|
: fun(f)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Fun& fun;
|
Fun const& fun;
|
||||||
|
|
||||||
template <typename Sequence, typename State, typename Context>
|
template <typename Sequence, typename State, typename Context>
|
||||||
struct apply
|
struct apply
|
||||||
@@ -48,14 +43,10 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline void
|
inline void
|
||||||
for_each(Sequence& seq, F& f, mpl::true_) // segmented implementation
|
for_each(Sequence& seq, F const& f, mpl::true_) // segmented implementation
|
||||||
{
|
{
|
||||||
fusion::segmented_fold_until(seq, void_(), segmented_for_each_fun<F>(f));
|
fusion::segmented_fold_until(seq, void_(), segmented_for_each_fun<F>(f));
|
||||||
}
|
}
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2007 Joel de Guzman
|
Copyright (c) 2001-2007 Joel de Guzman
|
||||||
Copyright (c) 2007 Dan Marsden
|
Copyright (c) 2007 Dan Marsden
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -14,7 +13,7 @@
|
|||||||
#include <boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp>
|
#include <boost/fusion/algorithm/iteration/detail/segmented_for_each.hpp>
|
||||||
#include <boost/fusion/support/is_segmented.hpp>
|
#include <boost/fusion/support/is_segmented.hpp>
|
||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <boost/core/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -29,16 +28,24 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline typename enable_if<traits::is_sequence<Sequence> >::type
|
inline typename
|
||||||
for_each(Sequence& seq, F f)
|
enable_if<
|
||||||
|
traits::is_sequence<Sequence>
|
||||||
|
, void
|
||||||
|
>::type
|
||||||
|
for_each(Sequence& seq, F const& f)
|
||||||
{
|
{
|
||||||
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
|
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline typename enable_if<traits::is_sequence<Sequence> >::type
|
inline typename
|
||||||
for_each(Sequence const& seq, F f)
|
enable_if<
|
||||||
|
traits::is_sequence<Sequence>
|
||||||
|
, void
|
||||||
|
>::type
|
||||||
|
for_each(Sequence const& seq, F const& f)
|
||||||
{
|
{
|
||||||
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
|
detail::for_each(seq, f, typename traits::is_segmented<Sequence>::type());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2011 Eric Niebler
|
Copyright (c) 2011 Eric Niebler
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -10,7 +9,7 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <boost/core/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -22,13 +21,21 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline typename enable_if<traits::is_sequence<Sequence> >::type
|
inline typename
|
||||||
for_each(Sequence& seq, F f);
|
enable_if<
|
||||||
|
traits::is_sequence<Sequence>
|
||||||
|
, void
|
||||||
|
>::type
|
||||||
|
for_each(Sequence& seq, F const& f);
|
||||||
|
|
||||||
template <typename Sequence, typename F>
|
template <typename Sequence, typename F>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
inline typename enable_if<traits::is_sequence<Sequence> >::type
|
inline typename
|
||||||
for_each(Sequence const& seq, F f);
|
enable_if<
|
||||||
|
traits::is_sequence<Sequence>
|
||||||
|
, void
|
||||||
|
>::type
|
||||||
|
for_each(Sequence const& seq, F const& f);
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2007 Dan Marsden
|
Copyright (c) 2007
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2007 Dan Marsden
|
Copyright (c) 2007 Dan Marsden
|
||||||
Copyright (c) 2009 Christopher Schmidt
|
Copyright (c) 2009 Christopher Schmidt
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -14,6 +13,7 @@
|
|||||||
#include <boost/mpl/apply.hpp>
|
#include <boost/mpl/apply.hpp>
|
||||||
#include <boost/mpl/eval_if.hpp>
|
#include <boost/mpl/eval_if.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
|
#include <boost/mpl/lambda.hpp>
|
||||||
#include <boost/mpl/or.hpp>
|
#include <boost/mpl/or.hpp>
|
||||||
#include <boost/fusion/iterator/advance.hpp>
|
#include <boost/fusion/iterator/advance.hpp>
|
||||||
#include <boost/fusion/iterator/distance.hpp>
|
#include <boost/fusion/iterator/distance.hpp>
|
||||||
@@ -22,9 +22,10 @@
|
|||||||
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
#include <boost/fusion/sequence/intrinsic/begin.hpp>
|
||||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||||
#include <boost/fusion/support/category_of.hpp>
|
#include <boost/fusion/support/category_of.hpp>
|
||||||
#include <boost/core/enable_if.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion {
|
||||||
|
struct random_access_traversal_tag;
|
||||||
|
namespace detail
|
||||||
{
|
{
|
||||||
template <typename Iterator, typename Pred>
|
template <typename Iterator, typename Pred>
|
||||||
struct apply_filter
|
struct apply_filter
|
||||||
@@ -177,8 +178,8 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
choose_find_if<
|
choose_find_if<
|
||||||
First
|
First
|
||||||
, Last
|
, Last
|
||||||
, Pred
|
, typename mpl::lambda<Pred>::type
|
||||||
, traits::is_random_access<First>::value
|
, is_base_of<random_access_traversal_tag, typename traits::category_of<First>::type>::value
|
||||||
>::type
|
>::type
|
||||||
type;
|
type;
|
||||||
|
|
||||||
@@ -207,23 +208,31 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
return recursive_call(iter, found());
|
return recursive_call(iter, found());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Iterator>
|
template <typename Iterator, typename Tag>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static typename boost::disable_if<traits::is_random_access<Iterator>, type>::type
|
static type
|
||||||
iter_call(Iterator const& iter)
|
choose_call(Iterator const& iter, Tag)
|
||||||
{
|
{
|
||||||
return recursive_call(iter);
|
return recursive_call(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Iterator>
|
template <typename Iterator>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static typename boost::enable_if<traits::is_random_access<Iterator>, type>::type
|
static type
|
||||||
iter_call(Iterator const& iter)
|
choose_call(Iterator const& iter, random_access_traversal_tag)
|
||||||
{
|
{
|
||||||
typedef typename result_of::distance<Iterator, type>::type N;
|
typedef typename result_of::distance<Iterator, type>::type N;
|
||||||
return fusion::advance<N>(iter);
|
return fusion::advance<N>(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename Iterator>
|
||||||
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
static type
|
||||||
|
iter_call(Iterator const& iter)
|
||||||
|
{
|
||||||
|
return choose_call(iter, typename traits::category_of<Iterator>::type());
|
||||||
|
}
|
||||||
|
|
||||||
template <typename Sequence>
|
template <typename Sequence>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type
|
static type
|
||||||
|
|||||||
@@ -18,11 +18,6 @@
|
|||||||
#include <boost/mpl/int.hpp>
|
#include <boost/mpl/int.hpp>
|
||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
template <typename Iterator_, bool IsLast>
|
template <typename Iterator_, bool IsLast>
|
||||||
@@ -173,9 +168,5 @@ namespace boost { namespace fusion
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
==============================================================================*/
|
==============================================================================*/
|
||||||
#if !defined(FUSION_REMOVE_IF_07162005_0818)
|
#if !defined(FUSION_REMOVE_IF_07162005_0818)
|
||||||
@@ -11,6 +10,7 @@
|
|||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/view/filter_view/filter_view.hpp>
|
#include <boost/fusion/view/filter_view/filter_view.hpp>
|
||||||
#include <boost/mpl/not.hpp>
|
#include <boost/mpl/not.hpp>
|
||||||
|
#include <boost/type_traits/is_same.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,11 +20,6 @@
|
|||||||
#include <boost/type_traits/add_const.hpp>
|
#include <boost/type_traits/add_const.hpp>
|
||||||
#include <boost/type_traits/add_reference.hpp>
|
#include <boost/type_traits/add_reference.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion {
|
namespace boost { namespace fusion {
|
||||||
|
|
||||||
struct bidirectional_traversal_tag;
|
struct bidirectional_traversal_tag;
|
||||||
@@ -115,14 +110,14 @@ namespace boost { namespace fusion {
|
|||||||
{};
|
{};
|
||||||
|
|
||||||
Seq& seq_;
|
Seq& seq_;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
deque_iterator& operator= (deque_iterator const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,10 +26,6 @@ namespace boost { namespace fusion
|
|||||||
template <typename Cons>
|
template <typename Cons>
|
||||||
struct cons_iterator_identity;
|
struct cons_iterator_identity;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
template <typename Cons = nil_>
|
template <typename Cons = nil_>
|
||||||
struct cons_iterator : iterator_base<cons_iterator<Cons> >
|
struct cons_iterator : iterator_base<cons_iterator<Cons> >
|
||||||
{
|
{
|
||||||
@@ -45,10 +41,11 @@ namespace boost { namespace fusion
|
|||||||
: cons(in_cons) {}
|
: cons(in_cons) {}
|
||||||
|
|
||||||
cons_type& cons;
|
cons_type& cons;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
cons_iterator& operator= (cons_iterator const&);
|
||||||
};
|
};
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct nil_iterator : iterator_base<nil_iterator>
|
struct nil_iterator : iterator_base<nil_iterator>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,10 +24,12 @@ namespace boost { namespace fusion
|
|||||||
struct value_at_key_impl<map_tag>
|
struct value_at_key_impl<map_tag>
|
||||||
{
|
{
|
||||||
template <typename Sequence, typename Key>
|
template <typename Sequence, typename Key>
|
||||||
struct apply : BOOST_FUSION_DECLTYPE_N3031((
|
struct apply
|
||||||
|
{
|
||||||
|
typedef typename BOOST_FUSION_IDENTIFIED_TYPE((
|
||||||
boost::declval<Sequence>().get_val(mpl::identity<Key>())
|
boost::declval<Sequence>().get_val(mpl::identity<Key>())
|
||||||
))
|
)) type;
|
||||||
{};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
# include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
|
# include <boost/fusion/container/map/detail/cpp03/map_fwd.hpp>
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#include <boost/fusion/container/map/detail/map_impl.hpp>
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// C++11 interface
|
// C++11 interface
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -17,11 +17,6 @@
|
|||||||
#include <boost/type_traits/is_const.hpp>
|
#include <boost/type_traits/is_const.hpp>
|
||||||
#include <boost/type_traits/add_const.hpp>
|
#include <boost/type_traits/add_const.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct random_access_traversal_tag;
|
struct random_access_traversal_tag;
|
||||||
@@ -160,12 +155,13 @@ namespace boost { namespace fusion
|
|||||||
{};
|
{};
|
||||||
|
|
||||||
Seq& seq_;
|
Seq& seq_;
|
||||||
};
|
|
||||||
}}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
private:
|
||||||
# pragma warning(pop)
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
#endif
|
map_iterator& operator= (map_iterator const&);
|
||||||
|
};
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
|
|||||||
@@ -47,10 +47,12 @@ namespace boost { namespace fusion
|
|||||||
struct value_at_impl<vector_tag>
|
struct value_at_impl<vector_tag>
|
||||||
{
|
{
|
||||||
template <typename Sequence, typename N>
|
template <typename Sequence, typename N>
|
||||||
struct apply : BOOST_FUSION_DECLTYPE_N3031((
|
struct apply
|
||||||
|
{
|
||||||
|
typedef typename BOOST_FUSION_IDENTIFIED_TYPE((
|
||||||
vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())
|
vector_detail::value_at_impl<N::value>(boost::declval<Sequence*>())
|
||||||
))
|
)) type;
|
||||||
{};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <boost/fusion/support/detail/and.hpp>
|
#include <boost/fusion/support/detail/and.hpp>
|
||||||
#include <boost/fusion/support/detail/index_sequence.hpp>
|
#include <boost/fusion/support/detail/index_sequence.hpp>
|
||||||
|
#include <boost/fusion/support/detail/propagate_trivialness.hpp>
|
||||||
#include <boost/fusion/container/vector/detail/at_impl.hpp>
|
#include <boost/fusion/container/vector/detail/at_impl.hpp>
|
||||||
#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
|
#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
|
||||||
#include <boost/fusion/container/vector/detail/begin_impl.hpp>
|
#include <boost/fusion/container/vector/detail/begin_impl.hpp>
|
||||||
@@ -50,8 +51,6 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
namespace vector_detail
|
namespace vector_detail
|
||||||
{
|
{
|
||||||
struct each_elem {};
|
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename This, typename T, typename T_, std::size_t Size, bool IsSeq
|
typename This, typename T, typename T_, std::size_t Size, bool IsSeq
|
||||||
>
|
>
|
||||||
@@ -131,32 +130,6 @@ namespace boost { namespace fusion
|
|||||||
: elem() // value-initialized explicitly
|
: elem() // value-initialized explicitly
|
||||||
{}
|
{}
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
store(store const& rhs)
|
|
||||||
: elem(rhs.elem)
|
|
||||||
{}
|
|
||||||
|
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
store&
|
|
||||||
operator=(store const& rhs)
|
|
||||||
{
|
|
||||||
elem = rhs.elem;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
store(store&& rhs)
|
|
||||||
: elem(static_cast<T&&>(rhs.elem))
|
|
||||||
{}
|
|
||||||
|
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
store&
|
|
||||||
operator=(store&& rhs)
|
|
||||||
{
|
|
||||||
elem = static_cast<T&&>(rhs.elem);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename U
|
typename U
|
||||||
, typename = typename boost::disable_if<
|
, typename = typename boost::disable_if<
|
||||||
@@ -168,15 +141,9 @@ namespace boost { namespace fusion
|
|||||||
: elem(std::forward<U>(rhs))
|
: elem(std::forward<U>(rhs))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
using elem_type = T;
|
|
||||||
T elem;
|
T elem;
|
||||||
};
|
};
|
||||||
|
|
||||||
// placed outside of vector_data due to GCC < 6 bug
|
|
||||||
template <std::size_t J, typename U>
|
|
||||||
static inline BOOST_FUSION_GPU_ENABLED
|
|
||||||
store<J, U> store_at_impl(store<J, U>*);
|
|
||||||
|
|
||||||
template <typename I, typename ...T>
|
template <typename I, typename ...T>
|
||||||
struct vector_data;
|
struct vector_data;
|
||||||
|
|
||||||
@@ -184,6 +151,7 @@ namespace boost { namespace fusion
|
|||||||
struct vector_data<detail::index_sequence<I...>, T...>
|
struct vector_data<detail::index_sequence<I...>, T...>
|
||||||
: store<I, T>...
|
: store<I, T>...
|
||||||
, sequence_base<vector_data<detail::index_sequence<I...>, T...> >
|
, sequence_base<vector_data<detail::index_sequence<I...>, T...> >
|
||||||
|
, private detail::propagate_trivialness<T...>
|
||||||
{
|
{
|
||||||
typedef vector_tag fusion_tag;
|
typedef vector_tag fusion_tag;
|
||||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||||
@@ -204,14 +172,14 @@ namespace boost { namespace fusion
|
|||||||
>
|
>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
explicit
|
explicit
|
||||||
vector_data(each_elem, Sequence&& rhs)
|
vector_data(Sequence&& rhs)
|
||||||
: store<I, T>(forward_at_c<I>(std::forward<Sequence>(rhs)))...
|
: store<I, T>(forward_at_c<I>(std::forward<Sequence>(rhs)))...
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template <typename ...U>
|
template <typename ...U>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
explicit
|
explicit
|
||||||
vector_data(each_elem, U&&... var)
|
vector_data(U&&... var)
|
||||||
: store<I, T>(std::forward<U>(var))...
|
: store<I, T>(std::forward<U>(var))...
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -220,31 +188,49 @@ namespace boost { namespace fusion
|
|||||||
void
|
void
|
||||||
assign_sequence(Sequence&& seq)
|
assign_sequence(Sequence&& seq)
|
||||||
{
|
{
|
||||||
#ifndef BOOST_NO_CXX17_FOLD_EXPRESSIONS
|
assign(std::forward<Sequence>(seq), detail::index_sequence<I...>());
|
||||||
(void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), ...);
|
|
||||||
#else
|
|
||||||
int nofold[] = { (void(store<I, T>::elem = vector_detail::forward_at_c<I>(static_cast<Sequence&&>(seq))), 0)..., 0 };
|
|
||||||
(void)nofold;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
template <typename Sequence>
|
||||||
template <std::size_t J>
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
using store_at = decltype(store_at_impl<J>(static_cast<vector_data*>(nullptr)));
|
void
|
||||||
|
assign(Sequence&&, detail::index_sequence<>) {}
|
||||||
|
|
||||||
|
template <typename Sequence, std::size_t N, std::size_t ...M>
|
||||||
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
void
|
||||||
|
assign(Sequence&& seq, detail::index_sequence<N, M...>)
|
||||||
|
{
|
||||||
|
at_impl(mpl::int_<N>()) = vector_detail::forward_at_c<N>(seq);
|
||||||
|
assign(std::forward<Sequence>(seq), detail::index_sequence<M...>());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <std::size_t N, typename U>
|
||||||
|
static BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
U& at_detail(store<N, U>* this_)
|
||||||
|
{
|
||||||
|
return this_->elem;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <std::size_t N, typename U>
|
||||||
|
static BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
U const& at_detail(store<N, U> const* this_)
|
||||||
|
{
|
||||||
|
return this_->elem;
|
||||||
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
template <typename J>
|
template <typename J>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
typename store_at<J::value>::elem_type& at_impl(J)
|
auto at_impl(J) -> decltype(at_detail<J::value>(&std::declval<vector_data&>()))
|
||||||
{
|
{
|
||||||
return store_at<J::value>::elem;
|
return at_detail<J::value>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename J>
|
template <typename J>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
typename store_at<J::value>::elem_type const& at_impl(J) const
|
auto at_impl(J) const -> decltype(at_detail<J::value>(&std::declval<vector_data const&>()))
|
||||||
{
|
{
|
||||||
return store_at<J::value>::elem;
|
return at_detail<J::value>(this);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace boost::fusion::vector_detail
|
} // namespace boost::fusion::vector_detail
|
||||||
@@ -278,7 +264,7 @@ namespace boost { namespace fusion
|
|||||||
// In the (near) future release, should be fixed.
|
// In the (near) future release, should be fixed.
|
||||||
/* BOOST_CONSTEXPR */ BOOST_FUSION_GPU_ENABLED
|
/* BOOST_CONSTEXPR */ BOOST_FUSION_GPU_ENABLED
|
||||||
explicit vector(U&&... u)
|
explicit vector(U&&... u)
|
||||||
: base(vector_detail::each_elem(), std::forward<U>(u)...)
|
: base(std::forward<U>(u)...)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template <
|
template <
|
||||||
@@ -291,7 +277,7 @@ namespace boost { namespace fusion
|
|||||||
>
|
>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
vector(Sequence&& seq)
|
vector(Sequence&& seq)
|
||||||
: base(vector_detail::each_elem(), std::forward<Sequence>(seq))
|
: base(std::forward<Sequence>(seq))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template <typename Sequence>
|
template <typename Sequence>
|
||||||
|
|||||||
@@ -19,11 +19,6 @@
|
|||||||
#include <boost/type_traits/add_const.hpp>
|
#include <boost/type_traits/add_const.hpp>
|
||||||
#include <boost/mpl/int.hpp>
|
#include <boost/mpl/int.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct vector_iterator_tag;
|
struct vector_iterator_tag;
|
||||||
@@ -47,13 +42,13 @@ namespace boost { namespace fusion
|
|||||||
: vec(in_vec) {}
|
: vec(in_vec) {}
|
||||||
|
|
||||||
Vector& vec;
|
Vector& vec;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
vector_iterator& operator= (vector_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
|
|
||||||
template <typename PtrOrSmartPtr> struct non_const_pointee;
|
template <typename PtrOrSmartPtr> struct non_const_pointee;
|
||||||
|
|
||||||
#if defined(BOOST_MSVC) || (defined(BOOST_BORLANDC) && !defined(BOOST_DISABLE_WIN32))
|
#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
|
||||||
# define BOOST_FUSION_TRAIT_DECL __cdecl
|
# define BOOST_FUSION_TRAIT_DECL __cdecl
|
||||||
#else
|
#else
|
||||||
# define BOOST_FUSION_TRAIT_DECL /**/
|
# define BOOST_FUSION_TRAIT_DECL /**/
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
==============================================================================*/
|
==============================================================================*/
|
||||||
|
|
||||||
#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP
|
#ifndef BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP
|
||||||
#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADT_HPP
|
#define BOOST_FUSION_INCLUDE_ADAPT_ASSOC_ADR_HPP
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
#include <boost/fusion/adapted/adt/adapt_assoc_adt.hpp>
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
#if !defined(FUSION_INCLUDE_IDENTITY_VIEW)
|
|
||||||
#define FUSION_INCLUDE_IDENTITY_VIEW
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/view/identity_view.hpp>
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -13,11 +13,6 @@
|
|||||||
#include <boost/fusion/support/tag_of.hpp>
|
#include <boost/fusion/support/tag_of.hpp>
|
||||||
#include <boost/fusion/sequence/intrinsic_fwd.hpp>
|
#include <boost/fusion/sequence/intrinsic_fwd.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
struct segment_sequence_tag {};
|
struct segment_sequence_tag {};
|
||||||
@@ -41,10 +36,6 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace extension
|
namespace extension
|
||||||
{
|
{
|
||||||
template<typename Tag>
|
template<typename Tag>
|
||||||
|
|||||||
@@ -19,11 +19,6 @@
|
|||||||
#include <boost/fusion/iterator/value_of.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
#include <boost/type_traits/remove_const.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
template <typename Derived_, typename Iterator_,
|
template <typename Derived_, typename Iterator_,
|
||||||
@@ -140,10 +135,6 @@ namespace boost { namespace fusion
|
|||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ namespace boost { namespace fusion { namespace traits
|
|||||||
{
|
{
|
||||||
template <typename Seq1, typename Seq2, typename Enable = void>
|
template <typename Seq1, typename Seq2, typename Enable = void>
|
||||||
struct enable_equality
|
struct enable_equality
|
||||||
: mpl::and_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
|
: mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
|
||||||
{};
|
{};
|
||||||
|
|
||||||
template <typename Seq1, typename Seq2, typename Enable = void>
|
template <typename Seq1, typename Seq2, typename Enable = void>
|
||||||
struct enable_comparison
|
struct enable_comparison
|
||||||
: mpl::and_<
|
: mpl::and_<
|
||||||
traits::is_sequence<Seq1>, traits::is_sequence<Seq2>
|
mpl::or_<traits::is_sequence<Seq1>, traits::is_sequence<Seq2> >
|
||||||
, mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
|
, mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
|
||||||
>
|
>
|
||||||
{};
|
{};
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ namespace boost { namespace fusion
|
|||||||
>::type
|
>::type
|
||||||
at_c(Sequence& seq)
|
at_c(Sequence& seq)
|
||||||
{
|
{
|
||||||
return result_of::at_c<Sequence, N>::call(seq);
|
return fusion::at<mpl::int_<N> >(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <int N, typename Sequence>
|
template <int N, typename Sequence>
|
||||||
@@ -126,7 +126,7 @@ namespace boost { namespace fusion
|
|||||||
inline typename result_of::at_c<Sequence const, N>::type
|
inline typename result_of::at_c<Sequence const, N>::type
|
||||||
at_c(Sequence const& seq)
|
at_c(Sequence const& seq)
|
||||||
{
|
{
|
||||||
return result_of::at_c<Sequence const, N>::call(seq);
|
return fusion::at<mpl::int_<N> >(seq);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#define FUSION_IN_05052005_0121
|
#define FUSION_IN_05052005_0121
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <istream>
|
||||||
#include <boost/fusion/sequence/io/detail/manip.hpp>
|
#include <boost/fusion/sequence/io/detail/manip.hpp>
|
||||||
|
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
|
|||||||
@@ -36,10 +36,10 @@ namespace boost { namespace fusion
|
|||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
template <typename Tag>
|
template <typename Tag>
|
||||||
int get_xalloc_index(int xalloc())
|
int get_xalloc_index(Tag* = 0)
|
||||||
{
|
{
|
||||||
// each Tag will have a unique index
|
// each Tag will have a unique index
|
||||||
static int const index = xalloc();
|
static int index = std::ios::xalloc();
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,19 +66,15 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
static arena ar; // our arena
|
static arena ar; // our arena
|
||||||
ar.data.push_back(new T(data));
|
ar.data.push_back(new T(data));
|
||||||
stream.pword(get_xalloc_index<Tag>(stream.xalloc)) = ar.data.back();
|
stream.pword(get_xalloc_index<Tag>()) = ar.data.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
static T const* get(Stream& stream)
|
static T const* get(Stream& stream)
|
||||||
{
|
{
|
||||||
return (T const*)stream.pword(get_xalloc_index<Tag>(stream.xalloc));
|
return (T const*)stream.pword(get_xalloc_index<Tag>());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
template <typename Tag, typename Stream>
|
template <typename Tag, typename Stream>
|
||||||
class string_ios_manip
|
class string_ios_manip
|
||||||
{
|
{
|
||||||
@@ -114,6 +110,7 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
// read a delimiter
|
// read a delimiter
|
||||||
string_type const* p = stream_data_t::get(stream);
|
string_type const* p = stream_data_t::get(stream);
|
||||||
|
std::ws(stream);
|
||||||
|
|
||||||
if (p)
|
if (p)
|
||||||
{
|
{
|
||||||
@@ -140,16 +137,17 @@ namespace boost { namespace fusion
|
|||||||
if (stream.get() != c)
|
if (stream.get() != c)
|
||||||
{
|
{
|
||||||
stream.unget();
|
stream.unget();
|
||||||
stream.setstate(Stream::failbit);
|
stream.setstate(std::ios::failbit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Stream& stream;
|
Stream& stream;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
string_ios_manip& operator= (string_ios_manip const&);
|
||||||
};
|
};
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // detail
|
} // detail
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#define FUSION_OUT_05052005_0121
|
#define FUSION_OUT_05052005_0121
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <ostream>
|
||||||
#include <boost/fusion/sequence/io/detail/manip.hpp>
|
#include <boost/fusion/sequence/io/detail/manip.hpp>
|
||||||
|
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
|
|||||||
@@ -10,9 +10,9 @@
|
|||||||
#define BOOST_IN_05042005_0120
|
#define BOOST_IN_05042005_0120
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <istream>
|
||||||
#include <boost/fusion/sequence/io/detail/in.hpp>
|
#include <boost/fusion/sequence/io/detail/in.hpp>
|
||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <iosfwd>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
#define BOOST_OUT_05042005_0120
|
#define BOOST_OUT_05042005_0120
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <ostream>
|
||||||
#include <boost/fusion/sequence/io/detail/out.hpp>
|
#include <boost/fusion/sequence/io/detail/out.hpp>
|
||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <boost/utility/enable_if.hpp>
|
#include <boost/utility/enable_if.hpp>
|
||||||
#include <boost/mpl/or.hpp>
|
#include <boost/mpl/or.hpp>
|
||||||
#include <iosfwd>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -97,26 +97,15 @@ namespace std
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Workaround for compilers not implementing N3031 (DR743 and DR950).
|
// Workaround for compiler which doesn't compile decltype(expr)::type.
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || \
|
// It expects decltype(expr) deduced as mpl::identity<T>.
|
||||||
BOOST_WORKAROUND(BOOST_GCC, < 40700) || \
|
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1913)) || BOOST_WORKAROUND(BOOST_GCC, < 40700)
|
||||||
defined(BOOST_CLANG) && (__clang_major__ == 3 && __clang_minor__ == 0)
|
|
||||||
# if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
using type_alias_t = T;
|
|
||||||
}}}
|
|
||||||
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
|
|
||||||
boost::fusion::detail::type_alias_t<decltype parenthesized_expr>
|
|
||||||
# else
|
|
||||||
# include <boost/mpl/identity.hpp>
|
# include <boost/mpl/identity.hpp>
|
||||||
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
|
# define BOOST_FUSION_IDENTIFIED_TYPE(parenthesized_expr) \
|
||||||
boost::mpl::identity<decltype parenthesized_expr>::type
|
boost::mpl::identity<decltype parenthesized_expr>::type::type
|
||||||
# endif
|
|
||||||
#else
|
#else
|
||||||
# define BOOST_FUSION_DECLTYPE_N3031(parenthesized_expr) \
|
# define BOOST_FUSION_IDENTIFIED_TYPE(parenthesized_expr) \
|
||||||
decltype parenthesized_expr
|
decltype parenthesized_expr ::type
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -127,14 +116,11 @@ namespace boost { namespace fusion { namespace detail
|
|||||||
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT
|
# define BOOST_FUSION_NOEXCEPT_ON_DEFAULTED BOOST_NOEXCEPT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# define BOOST_FUSION_PUSH_WARNINGS __pragma(warning(push))
|
#ifdef __has_extension
|
||||||
# define BOOST_FUSION_POP_WARNINGS __pragma(warning(pop))
|
# define BOOST_FUSION_HAS_EXTENSION __has_extension
|
||||||
# define BOOST_FUSION_DISABLE_MSVC_WARNING(num) __pragma(warning(disable : num))
|
|
||||||
#else
|
#else
|
||||||
# define BOOST_FUSION_PUSH_WARNINGS
|
# define BOOST_FUSION_HAS_EXTENSION(_) 0
|
||||||
# define BOOST_FUSION_POP_WARNINGS
|
|
||||||
# define BOOST_FUSION_DISABLE_MSVC_WARNING(num)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#define BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED
|
#define BOOST_FUSION_SUPPORT_DEDUCE_HPP_INCLUDED
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/core/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
|
|
||||||
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#define FUSION_AS_FUSION_ELEMENT_05052005_0338
|
#define FUSION_AS_FUSION_ELEMENT_05052005_0338
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/core/ref.hpp>
|
#include <boost/ref.hpp>
|
||||||
|
|
||||||
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|||||||
@@ -9,19 +9,20 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/is_sequence.hpp>
|
#include <boost/fusion/support/is_sequence.hpp>
|
||||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||||
|
#include <boost/core/enable_if.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
|
#include <boost/mpl/equal_to.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
template <typename Sequence1, typename Sequence2, bool
|
template <typename Sequence1, typename Sequence2, typename = void, typename = void>
|
||||||
= traits::is_sequence<Sequence1>::value &&
|
|
||||||
traits::is_sequence<Sequence2>::value>
|
|
||||||
struct is_same_size : mpl::false_ {};
|
struct is_same_size : mpl::false_ {};
|
||||||
|
|
||||||
template <typename Sequence1, typename Sequence2>
|
template <typename Sequence1, typename Sequence2>
|
||||||
struct is_same_size<Sequence1, Sequence2, true>
|
struct is_same_size<Sequence1, Sequence2,
|
||||||
: mpl::bool_<result_of::size<Sequence1>::value ==
|
typename enable_if<traits::is_sequence<Sequence1> >::type,
|
||||||
result_of::size<Sequence2>::value>
|
typename enable_if<traits::is_sequence<Sequence2> >::type>
|
||||||
|
: mpl::equal_to<result_of::size<Sequence1>, result_of::size<Sequence2> >
|
||||||
{};
|
{};
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|||||||
113
include/boost/fusion/support/detail/is_trivially_copyable.hpp
Normal file
113
include/boost/fusion/support/detail/is_trivially_copyable.hpp
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
==============================================================================*/
|
||||||
|
#ifndef BOOST_FUSION_SUPPORT_DETAIL_IS_TRIVIALLY_COPYABLE
|
||||||
|
#define BOOST_FUSION_SUPPORT_DETAIL_IS_TRIVIALLY_COPYABLE
|
||||||
|
|
||||||
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(BOOST_GCC, BOOST_TESTED_AT(90000))
|
||||||
|
// GCC treats volatile qualified scalar type as non trivially copyable,
|
||||||
|
// so to be fail safe, we also treat it as non trivially copyable type.
|
||||||
|
// http://wg21.link/cwg2094
|
||||||
|
// https://gcc.gnu.org/PR85679
|
||||||
|
//
|
||||||
|
// Some version of clang also tweats volatile qualified scalar type as
|
||||||
|
// non trivially copyable type, but all of known the versions what
|
||||||
|
// behaves as CWG 496 but not CWG 2094 implement builtin.
|
||||||
|
// So we don't have to emulate CWG 496 on clang.
|
||||||
|
# define BOOST_FUSION_DETAIL_VOLATILE_SCALAR_IS_NON_TRIVIALLY_COPYABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BOOST_FUSION_HAS_EXTENSION(is_trivially_copyable) || \
|
||||||
|
(50000 <= BOOST_GCC) || (1700 <= BOOST_MSVC)
|
||||||
|
# define BOOST_FUSION_IS_TRIVIALLY_COPYABLE __is_trivially_copyable
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_FUSION_IS_TRIVIALLY_COPYABLE)
|
||||||
|
# define BOOST_FUSION_DETAIL_IS_TRIVIALLY_COPYABLE_CONFORMING 2
|
||||||
|
# include <boost/mpl/bool.hpp>
|
||||||
|
#elif !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
|
||||||
|
# define BOOST_FUSION_DETAIL_IS_TRIVIALLY_COPYABLE_CONFORMING 2
|
||||||
|
# include <type_traits>
|
||||||
|
#else
|
||||||
|
# include <boost/config/workaround.hpp>
|
||||||
|
# include <boost/mpl/bool.hpp>
|
||||||
|
# include <boost/mpl/if.hpp>
|
||||||
|
# include <boost/type_traits/remove_cv.hpp>
|
||||||
|
# include <boost/type_traits/remove_all_extents.hpp>
|
||||||
|
# include <boost/type_traits/is_scalar.hpp>
|
||||||
|
# include <boost/type_traits/is_class.hpp>
|
||||||
|
# include <boost/type_traits/is_union.hpp>
|
||||||
|
# include <boost/type_traits/is_constructible.hpp>
|
||||||
|
# include <boost/type_traits/is_assignable.hpp>
|
||||||
|
# include <boost/type_traits/is_copy_constructible.hpp>
|
||||||
|
# include <boost/type_traits/is_copy_assignable.hpp>
|
||||||
|
# include <boost/type_traits/has_trivial_assign.hpp>
|
||||||
|
# include <boost/type_traits/has_trivial_copy.hpp>
|
||||||
|
# include <boost/type_traits/has_trivial_destructor.hpp>
|
||||||
|
# include <boost/type_traits/has_trivial_move_assign.hpp>
|
||||||
|
# include <boost/type_traits/has_trivial_move_constructor.hpp>
|
||||||
|
#ifdef BOOST_FUSION_DETAIL_VOLATILE_SCALAR_IS_NON_TRIVIALLY_COPYABLE
|
||||||
|
# include <boost/mpl/not.hpp>
|
||||||
|
# include <boost/type_traits/is_volatile.hpp>
|
||||||
|
#endif
|
||||||
|
#endif // <type_traits>
|
||||||
|
|
||||||
|
namespace boost { namespace fusion { namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef BOOST_FUSION_DETAIL_IS_TRIVIALLY_COPYABLE_CONFORMING
|
||||||
|
#if defined(BOOST_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_DECLTYPE) && \
|
||||||
|
defined(BOOST_IS_UNION) && defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION) && \
|
||||||
|
defined(BOOST_HAS_TRIVIAL_ASSIGN) && defined(BOOST_HAS_TRIVIAL_COPY) && \
|
||||||
|
defined(BOOST_HAS_TRIVIAL_MOVE_ASSIGN) && defined(BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR) && \
|
||||||
|
defined(BOOST_HAS_TRIVIAL_DESTRUCTOR) && defined(BOOST_TT_IS_CONSTRUCTIBLE_CONFORMING)
|
||||||
|
# define BOOST_FUSION_DETAIL_IS_TRIVIALLY_COPYABLE_CONFORMING 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_trivially_copyable_class
|
||||||
|
: mpl::bool_<
|
||||||
|
(has_trivial_copy<T>::value || !is_copy_constructible<T>::value) &&
|
||||||
|
(has_trivial_assign<T>::value || !is_copy_assignable<T>::value) &&
|
||||||
|
(has_trivial_move_constructor<T>::value || !is_constructible<T, T>::value) &&
|
||||||
|
(has_trivial_move_assign<T>::value || !is_assignable<T, T>::value) &&
|
||||||
|
(is_copy_constructible<T>::value || is_copy_assignable<T>::value ||
|
||||||
|
is_constructible<T, T>::value || is_assignable<T, T>::value) &&
|
||||||
|
has_trivial_destructor<T>::value
|
||||||
|
> { };
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_trivially_copyable_impl
|
||||||
|
: mpl::if_c<is_scalar<T>::value
|
||||||
|
#ifdef BOOST_FUSION_DETAIL_VOLATILE_SCALAR_IS_NON_TRIVIALLY_COPYABLE
|
||||||
|
, mpl::not_<is_volatile<T> >
|
||||||
|
#else
|
||||||
|
, mpl::true_
|
||||||
|
#endif
|
||||||
|
, typename mpl::if_c<is_class<T>::value || is_union<T>::value
|
||||||
|
, is_trivially_copyable_class<typename remove_cv<T>::type>
|
||||||
|
, mpl::false_
|
||||||
|
>::type
|
||||||
|
>::type { };
|
||||||
|
#endif // <type_traits>
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_trivially_copyable
|
||||||
|
#if defined(BOOST_FUSION_IS_TRIVIALLY_COPYABLE)
|
||||||
|
: mpl::bool_<BOOST_FUSION_IS_TRIVIALLY_COPYABLE(T)>
|
||||||
|
#elif !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS)
|
||||||
|
: std::is_trivially_copyable<T>
|
||||||
|
#else
|
||||||
|
: is_trivially_copyable_impl<typename remove_all_extents<T>::type>
|
||||||
|
#endif // <type_traits>
|
||||||
|
{ };
|
||||||
|
|
||||||
|
}}} // namespace boost::fusion::detail
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2018 Kohei Takahashi
|
||||||
|
|
||||||
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
==============================================================================*/
|
||||||
|
#ifndef BOOST_FUSION_SUPPORT_DETAIL_PROPAGATE_TRIVIALNESS
|
||||||
|
#define BOOST_FUSION_SUPPORT_DETAIL_PROPAGATE_TRIVIALNESS
|
||||||
|
|
||||||
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/fusion/support/detail/and.hpp>
|
||||||
|
#include <boost/fusion/support/detail/is_trivially_copyable.hpp>
|
||||||
|
#include <boost/mpl/if.hpp>
|
||||||
|
|
||||||
|
namespace boost { namespace fusion { namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
struct trivial_base { };
|
||||||
|
|
||||||
|
struct non_trivial_base
|
||||||
|
{
|
||||||
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
BOOST_DEFAULTED_FUNCTION(non_trivial_base(), {})
|
||||||
|
|
||||||
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
non_trivial_base(non_trivial_base const&) BOOST_NOEXCEPT { }
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename... T>
|
||||||
|
struct propagate_trivialness
|
||||||
|
: mpl::if_c<and_<is_trivially_copyable<T>...>::value
|
||||||
|
, trivial_base
|
||||||
|
, non_trivial_base
|
||||||
|
>::type
|
||||||
|
{ };
|
||||||
|
|
||||||
|
}}} // namespace boost::fusion::detail
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
// Special tags:
|
// Special tags:
|
||||||
struct non_fusion_tag;
|
|
||||||
struct sequence_facade_tag;
|
struct sequence_facade_tag;
|
||||||
struct boost_tuple_tag; // boost::tuples::tuple tag
|
struct boost_tuple_tag; // boost::tuples::tuple tag
|
||||||
struct boost_array_tag; // boost::array tag
|
struct boost_array_tag; // boost::array tag
|
||||||
@@ -33,13 +32,6 @@ namespace boost { namespace fusion
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
struct is_view_impl<non_fusion_tag>
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
struct apply : mpl::false_ {};
|
|
||||||
};
|
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
struct is_view_impl<sequence_facade_tag>
|
struct is_view_impl<sequence_facade_tag>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -120,17 +120,6 @@ namespace boost { namespace fusion
|
|||||||
return pair<First, typename detail::as_fusion_element<Second>::type>(val);
|
return pair<First, typename detail::as_fusion_element<Second>::type>(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
|
||||||
template <typename First, typename Second>
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
inline typename result_of::make_pair<First,Second>::type
|
|
||||||
make_pair(Second&& val)
|
|
||||||
{
|
|
||||||
return pair<First, typename detail::as_fusion_element<Second>::type>(
|
|
||||||
BOOST_FUSION_FWD_ELEM(Second, val));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
template <typename First, typename Second>
|
template <typename First, typename Second>
|
||||||
inline std::ostream&
|
inline std::ostream&
|
||||||
operator<<(std::ostream& os, pair<First, Second> const& p)
|
operator<<(std::ostream& os, pair<First, Second> const& p)
|
||||||
|
|||||||
@@ -48,17 +48,11 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
|
BOOST_MPL_HAS_XXX_TRAIT_DEF(fusion_tag)
|
||||||
|
|
||||||
template<typename Sequence, typename Active=void>
|
|
||||||
struct tag_of_fallback
|
|
||||||
{
|
|
||||||
typedef non_fusion_tag type;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename Sequence, typename Active>
|
template <typename Sequence, typename Active>
|
||||||
struct tag_of_impl
|
struct tag_of_impl
|
||||||
: mpl::if_<fusion::detail::is_mpl_sequence<Sequence>,
|
: mpl::if_<fusion::detail::is_mpl_sequence<Sequence>,
|
||||||
mpl::identity<mpl_sequence_tag>,
|
mpl::identity<mpl_sequence_tag>,
|
||||||
mpl::identity<typename tag_of_fallback<Sequence>::type> >::type
|
mpl::identity<non_fusion_tag> >::type
|
||||||
{};
|
{};
|
||||||
|
|
||||||
template <typename Sequence>
|
template <typename Sequence>
|
||||||
|
|||||||
@@ -28,11 +28,24 @@ namespace boost { namespace fusion
|
|||||||
{
|
{
|
||||||
})
|
})
|
||||||
|
|
||||||
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
BOOST_DEFAULTED_FUNCTION(
|
||||||
|
unused_type(unused_type const&) BOOST_FUSION_NOEXCEPT_ON_DEFAULTED,
|
||||||
|
{
|
||||||
|
})
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
unused_type(T const&) BOOST_NOEXCEPT
|
unused_type(T const&) BOOST_NOEXCEPT
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_FUSION_CONSTEXPR_THIS BOOST_FUSION_GPU_ENABLED
|
||||||
|
unused_type const&
|
||||||
|
operator=(unused_type const&) const BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();
|
BOOST_CONSTEXPR_OR_CONST unused_type unused = unused_type();
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace boost { namespace fusion
|
|||||||
>
|
>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
tuple(tuple<U...> const& other)
|
tuple(tuple<U...> const& other)
|
||||||
: base(vector_detail::each_elem(), other) {}
|
: base(other) {}
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename ...U
|
typename ...U
|
||||||
@@ -66,7 +66,7 @@ namespace boost { namespace fusion
|
|||||||
>
|
>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
tuple(tuple<U...>&& other)
|
tuple(tuple<U...>&& other)
|
||||||
: base(vector_detail::each_elem(), std::move(other)) {}
|
: base(std::move(other)) {}
|
||||||
|
|
||||||
template <
|
template <
|
||||||
typename ...U
|
typename ...U
|
||||||
@@ -78,17 +78,17 @@ namespace boost { namespace fusion
|
|||||||
/*BOOST_CONSTEXPR*/ BOOST_FUSION_GPU_ENABLED
|
/*BOOST_CONSTEXPR*/ BOOST_FUSION_GPU_ENABLED
|
||||||
explicit
|
explicit
|
||||||
tuple(U&&... args)
|
tuple(U&&... args)
|
||||||
: base(vector_detail::each_elem(), std::forward<U>(args)...) {}
|
: base(std::forward<U>(args)...) {}
|
||||||
|
|
||||||
template<typename U1, typename U2>
|
template<typename U1, typename U2>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
tuple(std::pair<U1, U2> const& other)
|
tuple(std::pair<U1, U2> const& other)
|
||||||
: base(vector_detail::each_elem(), other.first, other.second) {}
|
: base(other.first, other.second) {}
|
||||||
|
|
||||||
template<typename U1, typename U2>
|
template<typename U1, typename U2>
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
tuple(std::pair<U1, U2>&& other)
|
tuple(std::pair<U1, U2>&& other)
|
||||||
: base(vector_detail::each_elem(), std::move(other.first), std::move(other.second)) {}
|
: base(std::move(other.first), std::move(other.second)) {}
|
||||||
|
|
||||||
template<typename U>
|
template<typename U>
|
||||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
|
|||||||
@@ -17,6 +17,5 @@
|
|||||||
#include <boost/fusion/view/transform_view.hpp>
|
#include <boost/fusion/view/transform_view.hpp>
|
||||||
#include <boost/fusion/view/zip_view.hpp>
|
#include <boost/fusion/view/zip_view.hpp>
|
||||||
#include <boost/fusion/view/flatten_view.hpp>
|
#include <boost/fusion/view/flatten_view.hpp>
|
||||||
#include <boost/fusion/view/identity_view.hpp>
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -9,10 +8,14 @@
|
|||||||
#define FUSION_NEXT_IMPL_06052005_0900
|
#define FUSION_NEXT_IMPL_06052005_0900
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/iterator/next.hpp>
|
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
|
||||||
#include <boost/fusion/iterator/equal_to.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
#include <boost/mpl/eval_if.hpp>
|
#include <boost/mpl/eval_if.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
|
#include <boost/mpl/lambda.hpp>
|
||||||
|
#include <boost/mpl/quote.hpp>
|
||||||
|
#include <boost/mpl/bind.hpp>
|
||||||
|
#include <boost/mpl/placeholders.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -45,13 +48,26 @@ namespace boost { namespace fusion
|
|||||||
>::type
|
>::type
|
||||||
next_type;
|
next_type;
|
||||||
|
|
||||||
typedef filter_iterator<category, next_type, last_type, pred_type> type;
|
typedef typename
|
||||||
|
detail::static_find_if<
|
||||||
|
next_type
|
||||||
|
, last_type
|
||||||
|
, mpl::bind1<
|
||||||
|
typename mpl::lambda<pred_type>::type
|
||||||
|
, mpl::bind1<mpl::quote1<result_of::value_of>,mpl::_1>
|
||||||
|
>
|
||||||
|
>
|
||||||
|
filter;
|
||||||
|
|
||||||
|
typedef filter_iterator<
|
||||||
|
category, typename filter::type, last_type, pred_type>
|
||||||
|
type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type
|
static type
|
||||||
call(Iterator const& i)
|
call(Iterator const& i)
|
||||||
{
|
{
|
||||||
return type(fusion::next(i.first));
|
return type(filter::iter_call(i.first));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,11 +22,6 @@
|
|||||||
#include <boost/mpl/inherit.hpp>
|
#include <boost/mpl/inherit.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct filter_view_tag;
|
struct filter_view_tag;
|
||||||
@@ -61,13 +56,13 @@ namespace boost { namespace fusion
|
|||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
last_type last() const { return fusion::end(seq); }
|
last_type last() const { return fusion::end(seq); }
|
||||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
filter_view& operator= (filter_view const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -10,6 +9,7 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
|
#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
|
||||||
|
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
|
||||||
#include <boost/fusion/iterator/value_of.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
#include <boost/fusion/support/iterator_base.hpp>
|
#include <boost/fusion/support/iterator_base.hpp>
|
||||||
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
|
#include <boost/fusion/algorithm/query/detail/find_if.hpp>
|
||||||
@@ -26,11 +26,6 @@
|
|||||||
#include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp>
|
#include <boost/fusion/view/filter_view/detail/value_of_data_impl.hpp>
|
||||||
#include <boost/fusion/view/filter_view/detail/key_of_impl.hpp>
|
#include <boost/fusion/view/filter_view/detail/key_of_impl.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct filter_view_iterator_tag;
|
struct filter_view_iterator_tag;
|
||||||
@@ -65,13 +60,13 @@ namespace boost { namespace fusion
|
|||||||
: first(filter::iter_call(first_converter::call(in_first))) {}
|
: first(filter::iter_call(first_converter::call(in_first))) {}
|
||||||
|
|
||||||
first_type first;
|
first_type first;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
filter_iterator& operator= (filter_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,10 +19,6 @@
|
|||||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||||
#include <boost/fusion/view/flatten_view/flatten_view_iterator.hpp>
|
#include <boost/fusion/view/flatten_view/flatten_view_iterator.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -56,10 +52,6 @@ namespace boost { namespace fusion
|
|||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace extension
|
namespace boost { namespace fusion { namespace extension
|
||||||
{
|
{
|
||||||
template<>
|
template<>
|
||||||
|
|||||||
@@ -19,10 +19,6 @@
|
|||||||
#include <boost/fusion/iterator/deref.hpp>
|
#include <boost/fusion/iterator/deref.hpp>
|
||||||
#include <boost/fusion/iterator/value_of.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -50,10 +46,6 @@ namespace boost { namespace fusion
|
|||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace detail
|
namespace boost { namespace fusion { namespace detail
|
||||||
{
|
{
|
||||||
template<class Iterator, class = void>
|
template<class Iterator, class = void>
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
|
|
||||||
#if !defined(BOOST_FUSION_SEQUENCE_IDENTITY_VIEW_HPP_INCLUDED)
|
|
||||||
#define BOOST_FUSION_SEQUENCE_IDENTITY_VIEW_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/view/identity_view/identity_view.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
|
|
||||||
#if !defined(BOOST_FUSION_IDENTITY_VIEW_HPP_INCLUDED)
|
|
||||||
#define BOOST_FUSION_IDENTITY_VIEW_HPP_INCLUDED
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/view/transform_view.hpp>
|
|
||||||
#include <boost/functional/identity.hpp>
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion {
|
|
||||||
namespace detail {
|
|
||||||
struct identity : boost::identity
|
|
||||||
{
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
namespace boost {
|
|
||||||
template<typename T>
|
|
||||||
struct result_of<fusion::detail::identity(T)>
|
|
||||||
{
|
|
||||||
typedef T type;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
namespace boost { namespace fusion {
|
|
||||||
template<typename Sequence> struct identity_view
|
|
||||||
: transform_view<Sequence, detail::identity>
|
|
||||||
{
|
|
||||||
typedef transform_view<Sequence, detail::identity> base_type;
|
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
identity_view(Sequence& in_seq)
|
|
||||||
: base_type(in_seq, detail::identity()) {}
|
|
||||||
};
|
|
||||||
}}
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -25,11 +25,6 @@
|
|||||||
#include <boost/mpl/inherit.hpp>
|
#include <boost/mpl/inherit.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct joint_view_tag;
|
struct joint_view_tag;
|
||||||
@@ -75,15 +70,14 @@ namespace boost { namespace fusion
|
|||||||
concat_last_type concat_last() const { return fusion::end(seq2); }
|
concat_last_type concat_last() const { return fusion::end(seq2); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
joint_view& operator= (joint_view const&);
|
||||||
|
|
||||||
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
|
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
|
||||||
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
|
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,11 +20,6 @@
|
|||||||
#include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
|
#include <boost/fusion/view/joint_view/detail/key_of_impl.hpp>
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct joint_view_iterator_tag;
|
struct joint_view_iterator_tag;
|
||||||
@@ -54,13 +49,13 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
first_type first;
|
first_type first;
|
||||||
concat_type concat;
|
concat_type concat;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
joint_view_iterator& operator= (joint_view_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,11 +26,6 @@
|
|||||||
#include <boost/fusion/view/nview/detail/distance_impl.hpp>
|
#include <boost/fusion/view/nview/detail/distance_impl.hpp>
|
||||||
#include <boost/fusion/view/nview/detail/equal_to_impl.hpp>
|
#include <boost/fusion/view/nview/detail/equal_to_impl.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct nview_iterator_tag;
|
struct nview_iterator_tag;
|
||||||
@@ -51,14 +46,14 @@ namespace boost { namespace fusion
|
|||||||
: seq(in_seq) {}
|
: seq(in_seq) {}
|
||||||
|
|
||||||
Sequence& seq;
|
Sequence& seq;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
nview_iterator& operator= (nview_iterator const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,10 +18,6 @@
|
|||||||
#include <boost/fusion/view/repetitive_view/detail/begin_impl.hpp>
|
#include <boost/fusion/view/repetitive_view/detail/begin_impl.hpp>
|
||||||
#include <boost/fusion/view/repetitive_view/detail/end_impl.hpp>
|
#include <boost/fusion/view/repetitive_view/detail/end_impl.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -47,12 +43,12 @@ namespace boost { namespace fusion
|
|||||||
: seq(in_seq) {}
|
: seq(in_seq) {}
|
||||||
|
|
||||||
stored_seq_type seq;
|
stored_seq_type seq;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
repetitive_view& operator= (repetitive_view const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -19,11 +19,6 @@
|
|||||||
#include <boost/fusion/view/repetitive_view/detail/next_impl.hpp>
|
#include <boost/fusion/view/repetitive_view/detail/next_impl.hpp>
|
||||||
#include <boost/fusion/view/repetitive_view/detail/value_of_impl.hpp>
|
#include <boost/fusion/view/repetitive_view/detail/value_of_impl.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct repetitive_view_iterator_tag;
|
struct repetitive_view_iterator_tag;
|
||||||
@@ -51,13 +46,13 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
Sequence& seq;
|
Sequence& seq;
|
||||||
pos_type pos;
|
pos_type pos;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
repetitive_view_iterator& operator= (repetitive_view_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2009 Christopher Schmidt
|
Copyright (c) 2009 Christopher Schmidt
|
||||||
Copyright (c) 2021-2022 Denis Mikhailov
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -11,7 +10,6 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/iterator/deref_data.hpp>
|
#include <boost/fusion/iterator/deref_data.hpp>
|
||||||
#include <boost/fusion/iterator/prior.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace extension
|
namespace boost { namespace fusion { namespace extension
|
||||||
{
|
{
|
||||||
@@ -25,18 +23,14 @@ namespace boost { namespace fusion { namespace extension
|
|||||||
struct apply
|
struct apply
|
||||||
{
|
{
|
||||||
typedef typename
|
typedef typename
|
||||||
result_of::deref_data<
|
result_of::deref_data<typename It::first_type>::type
|
||||||
typename result_of::prior<
|
|
||||||
typename It::first_type
|
|
||||||
>::type
|
|
||||||
>::type
|
|
||||||
type;
|
type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type
|
static type
|
||||||
call(It const& it)
|
call(It const& it)
|
||||||
{
|
{
|
||||||
return fusion::deref_data(fusion::prior(it.first));
|
return fusion::deref_data(it.first);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2009 Christopher Schmidt
|
Copyright (c) 2009 Christopher Schmidt
|
||||||
Copyright (c) 2021-2022 Denis Mikhailov
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -11,7 +10,6 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/iterator/key_of.hpp>
|
#include <boost/fusion/iterator/key_of.hpp>
|
||||||
#include <boost/fusion/iterator/prior.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace extension
|
namespace boost { namespace fusion { namespace extension
|
||||||
{
|
{
|
||||||
@@ -23,15 +21,8 @@ namespace boost { namespace fusion { namespace extension
|
|||||||
{
|
{
|
||||||
template <typename It>
|
template <typename It>
|
||||||
struct apply
|
struct apply
|
||||||
{
|
: result_of::key_of<typename It::it_type>
|
||||||
typedef typename
|
{};
|
||||||
result_of::key_of<
|
|
||||||
typename result_of::prior<
|
|
||||||
typename It::first_type
|
|
||||||
>::type
|
|
||||||
>::type
|
|
||||||
type;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2009 Christopher Schmidt
|
Copyright (c) 2009 Christopher Schmidt
|
||||||
Copyright (c) 2021-2022 Denis Mikhailov
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -11,7 +10,6 @@
|
|||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
#include <boost/fusion/iterator/value_of_data.hpp>
|
#include <boost/fusion/iterator/value_of_data.hpp>
|
||||||
#include <boost/fusion/iterator/prior.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion { namespace extension
|
namespace boost { namespace fusion { namespace extension
|
||||||
{
|
{
|
||||||
@@ -23,15 +21,8 @@ namespace boost { namespace fusion { namespace extension
|
|||||||
{
|
{
|
||||||
template <typename It>
|
template <typename It>
|
||||||
struct apply
|
struct apply
|
||||||
{
|
: result_of::value_of_data<typename It::first_type>
|
||||||
typedef typename
|
{};
|
||||||
result_of::value_of_data<
|
|
||||||
typename result_of::prior<
|
|
||||||
typename It::first_type
|
|
||||||
>::type
|
|
||||||
>::type
|
|
||||||
type;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,6 @@
|
|||||||
#include <boost/mpl/inherit.hpp>
|
#include <boost/mpl/inherit.hpp>
|
||||||
#include <boost/mpl/identity.hpp>
|
#include <boost/mpl/identity.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct reverse_view_tag;
|
struct reverse_view_tag;
|
||||||
@@ -65,13 +60,13 @@ namespace boost { namespace fusion
|
|||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
last_type last() const { return fusion::end(seq); }
|
last_type last() const { return fusion::end(seq); }
|
||||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
reverse_view& operator= (reverse_view const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,11 +24,6 @@
|
|||||||
#include <boost/type_traits/is_base_of.hpp>
|
#include <boost/type_traits/is_base_of.hpp>
|
||||||
#include <boost/static_assert.hpp>
|
#include <boost/static_assert.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct reverse_view_iterator_tag;
|
struct reverse_view_iterator_tag;
|
||||||
@@ -52,13 +47,13 @@ namespace boost { namespace fusion
|
|||||||
: first(converter::call(in_first)) {}
|
: first(converter::call(in_first)) {}
|
||||||
|
|
||||||
first_type first;
|
first_type first;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
reverse_view_iterator& operator= (reverse_view_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,9 +20,9 @@
|
|||||||
#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
|
#include <boost/fusion/view/single_view/detail/value_of_impl.hpp>
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#if defined (BOOST_MSVC)
|
||||||
# pragma warning(push)
|
# pragma warning(push)
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
# pragma warning (disable: 4512) // assignment operator could not be generated.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
@@ -45,13 +45,12 @@ namespace boost { namespace fusion
|
|||||||
: view(in_view) {}
|
: view(in_view) {}
|
||||||
|
|
||||||
SingleView& view;
|
SingleView& view;
|
||||||
|
|
||||||
|
private:
|
||||||
|
single_view_iterator& operator=(single_view_iterator const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
@@ -61,6 +60,10 @@ namespace std
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (BOOST_MSVC)
|
||||||
|
# pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*=============================================================================
|
||||||
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
|
Copyright (c) 2007 Dan Marsden
|
||||||
|
|
||||||
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
==============================================================================*/
|
||||||
|
#if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936)
|
||||||
|
#define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936
|
||||||
|
|
||||||
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/utility/result_of.hpp>
|
||||||
|
|
||||||
|
namespace boost { namespace fusion
|
||||||
|
{
|
||||||
|
struct void_;
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
template <typename F>
|
||||||
|
struct apply_transform_result
|
||||||
|
{
|
||||||
|
template <typename T0, typename T1 = void_>
|
||||||
|
struct apply
|
||||||
|
: boost::result_of<F(T0, T1)>
|
||||||
|
{};
|
||||||
|
|
||||||
|
template <typename T0>
|
||||||
|
struct apply<T0, void_>
|
||||||
|
: boost::result_of<F(T0)>
|
||||||
|
{};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2005-2006 Dan Marsden
|
Copyright (c) 2005-2006 Dan Marsden
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -10,8 +9,9 @@
|
|||||||
#define BOOST_FUSION_AT_IMPL_20061029_1946
|
#define BOOST_FUSION_AT_IMPL_20061029_1946
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/mpl/apply.hpp>
|
||||||
|
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
|
||||||
#include <boost/fusion/sequence/intrinsic/at.hpp>
|
#include <boost/fusion/sequence/intrinsic/at.hpp>
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion {
|
namespace boost { namespace fusion {
|
||||||
struct transform_view_tag;
|
struct transform_view_tag;
|
||||||
@@ -29,8 +29,9 @@ namespace boost { namespace fusion {
|
|||||||
struct apply
|
struct apply
|
||||||
{
|
{
|
||||||
typedef typename Seq::transform_type F;
|
typedef typename Seq::transform_type F;
|
||||||
typedef typename result_of::at<typename Seq::sequence_type, N>::type value_type;
|
typedef detail::apply_transform_result<F> transform_type;
|
||||||
typedef typename boost::result_of<F(value_type)>::type type;
|
typedef typename boost::fusion::result_of::at<typename Seq::sequence_type, N>::type value_type;
|
||||||
|
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type call(Seq& seq)
|
static type call(Seq& seq)
|
||||||
@@ -47,9 +48,10 @@ namespace boost { namespace fusion {
|
|||||||
struct apply
|
struct apply
|
||||||
{
|
{
|
||||||
typedef typename Seq::transform_type F;
|
typedef typename Seq::transform_type F;
|
||||||
typedef typename result_of::at<typename Seq::sequence1_type, N>::type value1_type;
|
typedef detail::apply_transform_result<F> transform_type;
|
||||||
typedef typename result_of::at<typename Seq::sequence2_type, N>::type value2_type;
|
typedef typename boost::fusion::result_of::at<typename Seq::sequence1_type, N>::type value1_type;
|
||||||
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
|
typedef typename boost::fusion::result_of::at<typename Seq::sequence2_type, N>::type value2_type;
|
||||||
|
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type call(Seq& seq)
|
static type call(Seq& seq)
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
|
|
||||||
#if !defined(BOOST_FUSION_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM)
|
|
||||||
#define BOOST_FUSION_TRANSFORM_VIEW_DEREF_DATA_IMPL_JAN_9_2022_0354PM
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/iterator/deref.hpp>
|
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
|
||||||
#include <boost/type_traits/add_reference.hpp>
|
|
||||||
#include <boost/type_traits/add_const.hpp>
|
|
||||||
#include <boost/type_traits/is_reference.hpp>
|
|
||||||
#include <boost/type_traits/is_const.hpp>
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
#include <boost/mpl/if.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
|
||||||
{
|
|
||||||
struct transform_view_iterator_tag;
|
|
||||||
struct transform_view_iterator2_tag;
|
|
||||||
|
|
||||||
namespace extension
|
|
||||||
{
|
|
||||||
template<typename Tag>
|
|
||||||
struct deref_data_impl;
|
|
||||||
|
|
||||||
// Unary Version
|
|
||||||
template<>
|
|
||||||
struct deref_data_impl<transform_view_iterator_tag>
|
|
||||||
{
|
|
||||||
template <typename Iterator>
|
|
||||||
struct apply
|
|
||||||
{
|
|
||||||
typedef typename
|
|
||||||
result_of::deref<typename Iterator::first_type>::type
|
|
||||||
value_type;
|
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
|
||||||
typedef typename boost::result_of<F(value_type)>::type transformed_type;
|
|
||||||
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
|
|
||||||
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
|
|
||||||
|
|
||||||
typedef typename transformed_type_unconst::second_type raw_type;
|
|
||||||
typedef typename
|
|
||||||
boost::mpl::if_<
|
|
||||||
is_reference<transformed_type>
|
|
||||||
, typename boost::mpl::if_<
|
|
||||||
is_const<transformed_type_unref>
|
|
||||||
, typename boost::add_reference<typename boost::add_const<raw_type>::type>::type
|
|
||||||
, typename boost::add_reference<raw_type>::type
|
|
||||||
>::type
|
|
||||||
, raw_type
|
|
||||||
>::type
|
|
||||||
type;
|
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
|
||||||
static type
|
|
||||||
call(Iterator const& i)
|
|
||||||
{
|
|
||||||
return i.f(fusion::deref(i.first)).second;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// Binary Version is not supported with Associative Sequence
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -9,8 +8,10 @@
|
|||||||
#define FUSION_DEREF_IMPL_07162005_1026
|
#define FUSION_DEREF_IMPL_07162005_1026
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/mpl/apply.hpp>
|
||||||
#include <boost/fusion/iterator/deref.hpp>
|
#include <boost/fusion/iterator/deref.hpp>
|
||||||
#include <boost/utility/result_of.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
|
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -33,8 +34,8 @@ namespace boost { namespace fusion
|
|||||||
result_of::deref<typename Iterator::first_type>::type
|
result_of::deref<typename Iterator::first_type>::type
|
||||||
value_type;
|
value_type;
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||||
typedef typename boost::result_of<F(value_type)>::type type;
|
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type
|
static type
|
||||||
@@ -59,8 +60,8 @@ namespace boost { namespace fusion
|
|||||||
result_of::deref<typename Iterator::first2_type>::type
|
result_of::deref<typename Iterator::first2_type>::type
|
||||||
value2_type;
|
value2_type;
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||||
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
|
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||||
|
|
||||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||||
static type
|
static type
|
||||||
@@ -69,7 +70,7 @@ namespace boost { namespace fusion
|
|||||||
return i.f(*i.first1, *i.first2);
|
return i.f(*i.first1, *i.first2);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
|
|
||||||
#if !defined(BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM)
|
|
||||||
#define BOOST_FUSION_TRANSFORM_VIEW_KEY_OF_IMPL_JAN_9_2022_0354PM
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/iterator/deref.hpp>
|
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
|
||||||
{
|
|
||||||
struct transform_view_iterator_tag;
|
|
||||||
struct transform_view_iterator2_tag;
|
|
||||||
|
|
||||||
namespace extension
|
|
||||||
{
|
|
||||||
template<typename Tag>
|
|
||||||
struct key_of_impl;
|
|
||||||
|
|
||||||
// Unary Version
|
|
||||||
template<>
|
|
||||||
struct key_of_impl<transform_view_iterator_tag>
|
|
||||||
{
|
|
||||||
template <typename Iterator>
|
|
||||||
struct apply
|
|
||||||
{
|
|
||||||
typedef typename
|
|
||||||
result_of::deref<typename Iterator::first_type>::type
|
|
||||||
value_type;
|
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
|
||||||
typedef typename boost::result_of<F(value_type)>::type transformed_type;
|
|
||||||
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
|
|
||||||
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
|
|
||||||
|
|
||||||
typedef typename transformed_type_unconst::first_type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// Binary Version is not supported with Associative Sequence
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
#endif
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2005-2006 Dan Marsden
|
Copyright (c) 2005-2006 Dan Marsden
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -10,8 +9,9 @@
|
|||||||
#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745
|
#define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/mpl/apply.hpp>
|
||||||
|
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
|
||||||
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
|
#include <boost/fusion/sequence/intrinsic/value_at.hpp>
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion {
|
namespace boost { namespace fusion {
|
||||||
struct transform_view_tag;
|
struct transform_view_tag;
|
||||||
@@ -29,8 +29,9 @@ namespace boost { namespace fusion {
|
|||||||
struct apply
|
struct apply
|
||||||
{
|
{
|
||||||
typedef typename Seq::transform_type F;
|
typedef typename Seq::transform_type F;
|
||||||
typedef typename result_of::value_at<typename Seq::sequence_type, N>::type value_type;
|
typedef detail::apply_transform_result<F> transform_type;
|
||||||
typedef typename boost::result_of<F(value_type)>::type type;
|
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence_type, N>::type value_type;
|
||||||
|
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -41,9 +42,10 @@ namespace boost { namespace fusion {
|
|||||||
struct apply
|
struct apply
|
||||||
{
|
{
|
||||||
typedef typename Seq::transform_type F;
|
typedef typename Seq::transform_type F;
|
||||||
typedef typename result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
|
typedef detail::apply_transform_result<F> transform_type;
|
||||||
typedef typename result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
|
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence1_type, N>::type value1_type;
|
||||||
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
|
typedef typename boost::fusion::result_of::value_at<typename Seq::sequence2_type, N>::type value2_type;
|
||||||
|
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2022 Denis Mikhailov
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
|
|
||||||
#if !defined(BOOST_FUSION_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM)
|
|
||||||
#define BOOST_FUSION_TRANSFORM_VIEW_VALUE_OF_IMPL_JAN_9_2022_0354PM
|
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
|
||||||
#include <boost/fusion/iterator/deref.hpp>
|
|
||||||
#include <boost/type_traits/remove_reference.hpp>
|
|
||||||
#include <boost/type_traits/remove_const.hpp>
|
|
||||||
#include <boost/utility/result_of.hpp>
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
|
||||||
{
|
|
||||||
struct transform_view_iterator_tag;
|
|
||||||
struct transform_view_iterator2_tag;
|
|
||||||
|
|
||||||
namespace extension
|
|
||||||
{
|
|
||||||
template<typename Tag>
|
|
||||||
struct value_of_data_impl;
|
|
||||||
|
|
||||||
// Unary Version
|
|
||||||
template<>
|
|
||||||
struct value_of_data_impl<transform_view_iterator_tag>
|
|
||||||
{
|
|
||||||
template <typename Iterator>
|
|
||||||
struct apply
|
|
||||||
{
|
|
||||||
typedef typename
|
|
||||||
result_of::deref<typename Iterator::first_type>::type
|
|
||||||
value_type;
|
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
|
||||||
typedef typename boost::result_of<F(value_type)>::type transformed_type;
|
|
||||||
typedef typename boost::remove_reference<transformed_type>::type transformed_type_unref;
|
|
||||||
typedef typename boost::remove_const<transformed_type_unref>::type transformed_type_unconst;
|
|
||||||
|
|
||||||
typedef typename transformed_type_unconst::second_type type;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// Binary Version is not supported with Associative Sequence
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
#endif
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@@ -9,8 +8,9 @@
|
|||||||
#define FUSION_VALUE_OF_IMPL_07162005_1030
|
#define FUSION_VALUE_OF_IMPL_07162005_1030
|
||||||
|
|
||||||
#include <boost/fusion/support/config.hpp>
|
#include <boost/fusion/support/config.hpp>
|
||||||
|
#include <boost/mpl/apply.hpp>
|
||||||
#include <boost/fusion/iterator/value_of.hpp>
|
#include <boost/fusion/iterator/value_of.hpp>
|
||||||
#include <boost/utility/result_of.hpp>
|
#include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp>
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -33,8 +33,8 @@ namespace boost { namespace fusion
|
|||||||
result_of::value_of<typename Iterator::first_type>::type
|
result_of::value_of<typename Iterator::first_type>::type
|
||||||
value_type;
|
value_type;
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||||
typedef typename boost::result_of<F(value_type)>::type type;
|
typedef typename mpl::apply<transform_type, value_type>::type type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,8 +52,8 @@ namespace boost { namespace fusion
|
|||||||
result_of::value_of<typename Iterator::first2_type>::type
|
result_of::value_of<typename Iterator::first2_type>::type
|
||||||
value2_type;
|
value2_type;
|
||||||
|
|
||||||
typedef typename Iterator::transform_type F;
|
typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type;
|
||||||
typedef typename boost::result_of<F(value1_type, value2_type)>::type type;
|
typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,6 @@
|
|||||||
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
#include <boost/fusion/sequence/intrinsic/size.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
#include <boost/mpl/bool.hpp>
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
struct void_;
|
struct void_;
|
||||||
@@ -80,6 +75,10 @@ namespace boost { namespace fusion
|
|||||||
transform_type f;
|
transform_type f;
|
||||||
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
|
typename mpl::if_<traits::is_view<Sequence1>, Sequence1, Sequence1&>::type seq1;
|
||||||
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
|
typename mpl::if_<traits::is_view<Sequence2>, Sequence2, Sequence2&>::type seq2;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
transform_view& operator= (transform_view const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Unary Version
|
// Unary Version
|
||||||
@@ -113,13 +112,13 @@ namespace boost { namespace fusion
|
|||||||
last_type last() const { return fusion::end(seq); }
|
last_type last() const { return fusion::end(seq); }
|
||||||
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq;
|
||||||
transform_type f;
|
transform_type f;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
transform_view& operator= (transform_view const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,14 +19,6 @@
|
|||||||
#include <boost/fusion/view/transform_view/detail/advance_impl.hpp>
|
#include <boost/fusion/view/transform_view/detail/advance_impl.hpp>
|
||||||
#include <boost/fusion/view/transform_view/detail/distance_impl.hpp>
|
#include <boost/fusion/view/transform_view/detail/distance_impl.hpp>
|
||||||
#include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp>
|
#include <boost/fusion/view/transform_view/detail/equal_to_impl.hpp>
|
||||||
#include <boost/fusion/view/transform_view/detail/key_of_impl.hpp>
|
|
||||||
#include <boost/fusion/view/transform_view/detail/value_of_data_impl.hpp>
|
|
||||||
#include <boost/fusion/view/transform_view/detail/deref_data_impl.hpp>
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(push)
|
|
||||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace boost { namespace fusion
|
namespace boost { namespace fusion
|
||||||
{
|
{
|
||||||
@@ -49,6 +41,10 @@ namespace boost { namespace fusion
|
|||||||
|
|
||||||
first_type first;
|
first_type first;
|
||||||
transform_type f;
|
transform_type f;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
transform_view_iterator& operator= (transform_view_iterator const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Binary Version
|
// Binary Version
|
||||||
@@ -73,13 +69,13 @@ namespace boost { namespace fusion
|
|||||||
first1_type first1;
|
first1_type first1;
|
||||||
first2_type first2;
|
first2_type first2;
|
||||||
transform_type f;
|
transform_type f;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// silence MSVC warning C4512: assignment operator could not be generated
|
||||||
|
transform_view_iterator2& operator= (transform_view_iterator2 const&);
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
#ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,6 +16,5 @@
|
|||||||
"Joel de Guzman <joel -at- boost-consulting.com>",
|
"Joel de Guzman <joel -at- boost-consulting.com>",
|
||||||
"Dan Marsden <danmarsden -at- yahoo.co.uk>",
|
"Dan Marsden <danmarsden -at- yahoo.co.uk>",
|
||||||
"Tobias Schwinger <tschwinger -at- isonews2.com>"
|
"Tobias Schwinger <tschwinger -at- isonews2.com>"
|
||||||
],
|
]
|
||||||
"cxxstd": "03"
|
|
||||||
}
|
}
|
||||||
|
|||||||
15
test/Jamfile
15
test/Jamfile
@@ -66,7 +66,6 @@ project
|
|||||||
[ run algorithm/zip2.cpp ]
|
[ run algorithm/zip2.cpp ]
|
||||||
[ run algorithm/zip_ignore.cpp ]
|
[ run algorithm/zip_ignore.cpp ]
|
||||||
[ run algorithm/flatten.cpp ]
|
[ run algorithm/flatten.cpp ]
|
||||||
[ compile algorithm/ticket-5490.cpp ]
|
|
||||||
|
|
||||||
[ run sequence/as_deque.cpp ]
|
[ run sequence/as_deque.cpp ]
|
||||||
[ run sequence/as_list.cpp ]
|
[ run sequence/as_list.cpp ]
|
||||||
@@ -155,8 +154,9 @@ project
|
|||||||
[ run sequence/tuple_traits.cpp : :
|
[ run sequence/tuple_traits.cpp : :
|
||||||
: <define>BOOST_FUSION_DISABLE_VARIADIC_VECTOR
|
: <define>BOOST_FUSION_DISABLE_VARIADIC_VECTOR
|
||||||
: tuple_traits__no_variadic ]
|
: tuple_traits__no_variadic ]
|
||||||
|
[ run sequence/tuple_trivially_copyable.cpp : :
|
||||||
|
: [ requires cxx11_variadic_templates ] ]
|
||||||
[ run sequence/transform_view.cpp ]
|
[ run sequence/transform_view.cpp ]
|
||||||
[ run sequence/identity_view.cpp ]
|
|
||||||
[ run sequence/vector_comparison.cpp ]
|
[ run sequence/vector_comparison.cpp ]
|
||||||
[ run sequence/vector_construction.cpp ]
|
[ run sequence/vector_construction.cpp ]
|
||||||
[ run sequence/vector_conversion.cpp ]
|
[ run sequence/vector_conversion.cpp ]
|
||||||
@@ -177,6 +177,8 @@ project
|
|||||||
[ run sequence/vector_traits.cpp : :
|
[ run sequence/vector_traits.cpp : :
|
||||||
: <define>BOOST_FUSION_DISABLE_VARIADIC_VECTOR
|
: <define>BOOST_FUSION_DISABLE_VARIADIC_VECTOR
|
||||||
: vector_traits__no_variadic ]
|
: vector_traits__no_variadic ]
|
||||||
|
[ run sequence/vector_trivially_copyable.cpp : :
|
||||||
|
: [ requires cxx11_variadic_templates ] ]
|
||||||
[ run sequence/vector_value_at.cpp ]
|
[ run sequence/vector_value_at.cpp ]
|
||||||
[ run sequence/zip_view.cpp ]
|
[ run sequence/zip_view.cpp ]
|
||||||
[ run sequence/zip_view2.cpp ]
|
[ run sequence/zip_view2.cpp ]
|
||||||
@@ -258,7 +260,6 @@ project
|
|||||||
[ run sequence/swap.cpp ]
|
[ run sequence/swap.cpp ]
|
||||||
|
|
||||||
[ compile support/is_sequence.cpp ]
|
[ compile support/is_sequence.cpp ]
|
||||||
[ compile support/is_view.cpp ]
|
|
||||||
[ compile support/pair_deque.cpp ]
|
[ compile support/pair_deque.cpp ]
|
||||||
[ compile support/pair_list.cpp ]
|
[ compile support/pair_list.cpp ]
|
||||||
[ compile support/pair_map.cpp ]
|
[ compile support/pair_map.cpp ]
|
||||||
@@ -271,11 +272,9 @@ project
|
|||||||
: [ requires cxx11_variadic_templates ] ]
|
: [ requires cxx11_variadic_templates ] ]
|
||||||
[ compile support/tag_of.cpp ]
|
[ compile support/tag_of.cpp ]
|
||||||
[ compile support/unused.cpp ]
|
[ compile support/unused.cpp ]
|
||||||
[ compile support/detail/tag_of_fallback.cpp ]
|
[ compile support/is_trivially_copyable.cpp ]
|
||||||
|
[ compile support/propagate_trivialness.cpp
|
||||||
[ compile-fail support/make_pair_r-value.cpp ]
|
: [ requires cxx11_variadic_templates ] ]
|
||||||
[ compile support/make_pair_r-value.cpp
|
|
||||||
: [ requires cxx11_rvalue_references ] ]
|
|
||||||
|
|
||||||
# [ compile-fail xxx.cpp ]
|
# [ compile-fail xxx.cpp ]
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
==============================================================================*/
|
==============================================================================*/
|
||||||
#include <boost/core/lightweight_test.hpp>
|
#include <boost/detail/lightweight_test.hpp>
|
||||||
#include <boost/fusion/container/vector/vector.hpp>
|
#include <boost/fusion/container/vector/vector.hpp>
|
||||||
#include <boost/fusion/adapted/mpl.hpp>
|
#include <boost/fusion/adapted/mpl.hpp>
|
||||||
#include <boost/fusion/sequence/io/out.hpp>
|
#include <boost/fusion/sequence/io/out.hpp>
|
||||||
#include <boost/fusion/sequence/comparison/equal_to.hpp>
|
|
||||||
#include <boost/fusion/algorithm/iteration/for_each.hpp>
|
#include <boost/fusion/algorithm/iteration/for_each.hpp>
|
||||||
#include <boost/mpl/vector_c.hpp>
|
#include <boost/mpl/vector_c.hpp>
|
||||||
|
|
||||||
@@ -31,15 +29,6 @@ struct increment
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mutable_increment : increment
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
void operator()(T& v)
|
|
||||||
{
|
|
||||||
return increment::operator()(v);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
@@ -55,20 +44,9 @@ main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char const ruby[] = "Ruby";
|
|
||||||
typedef vector<int, char, double, char const*> vector_type;
|
typedef vector<int, char, double, char const*> vector_type;
|
||||||
vector_type v(1, 'x', 3.3, ruby);
|
vector_type v(1, 'x', 3.3, "Ruby");
|
||||||
for_each(v, increment());
|
for_each(v, increment());
|
||||||
BOOST_TEST_EQ(v, vector_type(2, 'y', 4.3, ruby + 1));
|
|
||||||
std::cout << v << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
char const ruby[] = "Ruby";
|
|
||||||
typedef vector<int, char, double, char const*> vector_type;
|
|
||||||
vector_type v(1, 'x', 3.3, ruby);
|
|
||||||
for_each(v, mutable_increment());
|
|
||||||
BOOST_TEST_EQ(v, vector_type(2, 'y', 4.3, ruby + 1));
|
|
||||||
std::cout << v << std::endl;
|
std::cout << v << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,14 @@
|
|||||||
/*=============================================================================
|
/*=============================================================================
|
||||||
Copyright (c) 2001-2011 Joel de Guzman
|
Copyright (c) 2001-2011 Joel de Guzman
|
||||||
Copyright (c) 2011 Eric Niebler
|
Copyright (c) 2011 Eric Niebler
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
==============================================================================*/
|
==============================================================================*/
|
||||||
#include <boost/core/lightweight_test.hpp>
|
#include <boost/detail/lightweight_test.hpp>
|
||||||
#include <boost/fusion/container/vector/vector.hpp>
|
#include <boost/fusion/container/vector/vector.hpp>
|
||||||
#include <boost/fusion/container/generation/make_vector.hpp>
|
|
||||||
#include <boost/fusion/algorithm/iteration/for_each.hpp>
|
#include <boost/fusion/algorithm/iteration/for_each.hpp>
|
||||||
#include <boost/fusion/sequence/comparison/equal_to.hpp>
|
#include <boost/fusion/container/generation/make_vector.hpp>
|
||||||
#include <boost/fusion/sequence/io/out.hpp>
|
|
||||||
#include "../sequence/tree.hpp"
|
#include "../sequence/tree.hpp"
|
||||||
|
|
||||||
struct print
|
struct print
|
||||||
@@ -23,31 +20,6 @@ struct print
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct increment
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
void operator()(T& v) const
|
|
||||||
{
|
|
||||||
++v;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct mutable_increment : increment
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
void operator()(T& v)
|
|
||||||
{
|
|
||||||
return increment::operator()(v);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename F, typename Tree>
|
|
||||||
void test(Tree tree, Tree const& expected)
|
|
||||||
{
|
|
||||||
boost::fusion::for_each(tree, F());
|
|
||||||
BOOST_TEST_EQ(tree, expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
@@ -70,69 +42,6 @@ main()
|
|||||||
)
|
)
|
||||||
, print()
|
, print()
|
||||||
);
|
);
|
||||||
std::cout << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test<increment>(
|
|
||||||
make_tree(
|
|
||||||
make_vector(double(0),'B')
|
|
||||||
, make_tree(
|
|
||||||
make_vector(1,2,long(3))
|
|
||||||
, make_tree(make_vector('a','b','c'))
|
|
||||||
, make_tree(make_vector(short('d'),'e','f'))
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(4,5,6)
|
|
||||||
, make_tree(make_vector(float(1),'h','i'))
|
|
||||||
, make_tree(make_vector('j','k','l'))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(double(1),'C')
|
|
||||||
, make_tree(
|
|
||||||
make_vector(2,3,long(4))
|
|
||||||
, make_tree(make_vector('b','c','d'))
|
|
||||||
, make_tree(make_vector(short('e'),'f','g'))
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(5,6,7)
|
|
||||||
, make_tree(make_vector(float(2),'i','j'))
|
|
||||||
, make_tree(make_vector('k','l','m'))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test<mutable_increment>(
|
|
||||||
make_tree(
|
|
||||||
make_vector(double(0),'B')
|
|
||||||
, make_tree(
|
|
||||||
make_vector(1,2,long(3))
|
|
||||||
, make_tree(make_vector('a','b','c'))
|
|
||||||
, make_tree(make_vector(short('d'),'e','f'))
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(4,5,6)
|
|
||||||
, make_tree(make_vector(float(1),'h','i'))
|
|
||||||
, make_tree(make_vector('j','k','l'))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(double(1),'C')
|
|
||||||
, make_tree(
|
|
||||||
make_vector(2,3,long(4))
|
|
||||||
, make_tree(make_vector('b','c','d'))
|
|
||||||
, make_tree(make_vector(short('e'),'f','g'))
|
|
||||||
)
|
|
||||||
, make_tree(
|
|
||||||
make_vector(5,6,7)
|
|
||||||
, make_tree(make_vector(float(2),'i','j'))
|
|
||||||
, make_tree(make_vector('k','l','m'))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
/*=============================================================================
|
|
||||||
Copyright (c) 2018 Kohei Takahashi
|
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
==============================================================================*/
|
|
||||||
#include <boost/fusion/include/vector.hpp>
|
|
||||||
#include <boost/fusion/include/transform.hpp>
|
|
||||||
#include <boost/mpl/quote.hpp>
|
|
||||||
#include <boost/mpl/placeholders.hpp>
|
|
||||||
#include <boost/core/ignore_unused.hpp>
|
|
||||||
|
|
||||||
using namespace boost::fusion;
|
|
||||||
|
|
||||||
template <typename>
|
|
||||||
struct predicate {};
|
|
||||||
|
|
||||||
struct unique {};
|
|
||||||
|
|
||||||
template <typename>
|
|
||||||
struct meta_func
|
|
||||||
{
|
|
||||||
typedef unique result_type;
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
unique operator()(const T&) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
vector<int> v;
|
|
||||||
|
|
||||||
typedef predicate<boost::mpl::_1> lambda_t;
|
|
||||||
typedef boost::mpl::quote1<predicate> quote_t;
|
|
||||||
|
|
||||||
vector<unique> l = transform(v, meta_func<lambda_t>());
|
|
||||||
|
|
||||||
vector<unique> q = transform(v, meta_func<quote_t>());
|
|
||||||
|
|
||||||
boost::ignore_unused(l, q);
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
#include <boost/fusion/functional/adapter/fused.hpp>
|
#include <boost/fusion/functional/adapter/fused.hpp>
|
||||||
#include <boost/detail/lightweight_test.hpp>
|
#include <boost/detail/lightweight_test.hpp>
|
||||||
|
|
||||||
#include <boost/core/noncopyable.hpp>
|
#include <boost/noncopyable.hpp>
|
||||||
|
|
||||||
#include <boost/fusion/container/generation/make_vector.hpp>
|
#include <boost/fusion/container/generation/make_vector.hpp>
|
||||||
#include <boost/fusion/container/vector.hpp>
|
#include <boost/fusion/container/vector.hpp>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user