mirror of
https://github.com/boostorg/mpl.git
synced 2026-08-10 07:31:34 +02:00
Compare commits
78
Commits
boost-1.61.0
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2358570f2d | ||
|
|
02ec362f5c | ||
|
|
4b8160057a | ||
|
|
03869de68e | ||
|
|
74d927f984 | ||
|
|
aa3b1c464d | ||
|
|
7df84b35eb | ||
|
|
cd74f40d46 | ||
|
|
502078c91d | ||
|
|
2b7937ac6f | ||
|
|
6172029f82 | ||
|
|
d223d3cd60 | ||
|
|
bace27426e | ||
|
|
c8a1f64ff6 | ||
|
|
4b34fa1378 | ||
|
|
bf4a5afb3c | ||
|
|
b37b709cbd | ||
|
|
b86c4cc950 | ||
|
|
8b6fae5089 | ||
|
|
1856fa8429 | ||
|
|
271dea60f5 | ||
|
|
992a85f466 | ||
|
|
12a59d801f | ||
|
|
d4e911ab88 | ||
|
|
1019bb5fad | ||
|
|
e30c4102a2 | ||
|
|
fb6b861834 | ||
|
|
8499ae7e4f | ||
|
|
b440c45c28 | ||
|
|
db09fb1dce | ||
|
|
8f10d06b96 | ||
|
|
03d89ec586 | ||
|
|
3301d917dc | ||
|
|
bd4ec497a8 | ||
|
|
4634ef904e | ||
|
|
c61b1e3508 | ||
|
|
e9e3faf4be | ||
|
|
5f79900dcc | ||
|
|
793bf12d42 | ||
|
|
341748e4cb | ||
|
|
db132085b9 | ||
|
|
f3464e3ef7 | ||
|
|
71ee3ac5bd | ||
|
|
cc883aa12a | ||
|
|
6704b09dcf | ||
|
|
9c0f98f088 | ||
|
|
3d8a60ed6a | ||
|
|
e01a10925d | ||
|
|
273db79266 | ||
|
|
c7df450a81 | ||
|
|
ac67f5952e | ||
|
|
758a7f6c6a | ||
|
|
95733a1c45 | ||
|
|
e44b2ae761 | ||
|
|
42c794ad42 | ||
|
|
270f33f679 | ||
|
|
41d036aea2 | ||
|
|
44ebb23b6a | ||
|
|
b877c35841 | ||
|
|
b295845afe | ||
|
|
71d523d949 | ||
|
|
3c1910797c | ||
|
|
f48fd09d02 | ||
|
|
29c10a72a1 | ||
|
|
238cda5fb9 | ||
|
|
2371f85461 | ||
|
|
f311a495ed | ||
|
|
dbcc7b8c7b | ||
|
|
ef60815c66 | ||
|
|
523bc5a782 | ||
|
|
a81b00a5f0 | ||
|
|
13e4e53259 | ||
|
|
ecb4d2a89f | ||
|
|
4265eb6319 | ||
|
|
525c773836 | ||
|
|
efc2a862a3 | ||
|
|
3b126bdf8c | ||
|
|
869438d60b |
@@ -0,0 +1,97 @@
|
|||||||
|
# Copyright 2016, 2017 Peter Dimov
|
||||||
|
# Copyright 2017 - 2019 James E. King III
|
||||||
|
# Copyright 2019 - 2021 Alexander Grund
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generic Appveyor build script for boostorg repositories
|
||||||
|
# See: https://github.com/boostorg/boost-ci/
|
||||||
|
#
|
||||||
|
# Instructions for customizing this script for your library:
|
||||||
|
#
|
||||||
|
# 1. Customize the compilers and language levels you want.
|
||||||
|
# 2. If you have more than include/, src/, test/, example/, examples/,
|
||||||
|
# benchmark/ or tools/ directories, set the environment variable DEPINST.
|
||||||
|
# For example if your build uses code in "bench/" and "fog/" directories:
|
||||||
|
# - DEPINST: --include bench --include fog
|
||||||
|
# 3. Enable pull request builds in your boostorg/<library> account.
|
||||||
|
#
|
||||||
|
# That's it - the script will do everything else for you.
|
||||||
|
#
|
||||||
|
|
||||||
|
version: 1.0.{build}-{branch}
|
||||||
|
|
||||||
|
shallow_clone: true
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- /bugfix\/.*/
|
||||||
|
- /feature\/.*/
|
||||||
|
- /fix\/.*/
|
||||||
|
- /pr\/.*/
|
||||||
|
|
||||||
|
skip_commits:
|
||||||
|
files:
|
||||||
|
- LICENSE
|
||||||
|
- meta/*
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
fast_finish: false
|
||||||
|
# Adding MAYFAIL to any matrix job allows it to fail but the build stays green:
|
||||||
|
allow_failures:
|
||||||
|
- MAYFAIL: true
|
||||||
|
|
||||||
|
environment:
|
||||||
|
global:
|
||||||
|
B2_CI_VERSION: 1
|
||||||
|
GIT_FETCH_JOBS: 4
|
||||||
|
# see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties
|
||||||
|
# to use the default for a given environment, comment it out; recommend you build debug and release however:
|
||||||
|
# on Windows it is important to exercise all the possibilities, especially shared vs static, however most
|
||||||
|
# libraries that care about this exercise it in their Jamfiles...
|
||||||
|
B2_ADDRESS_MODEL: 32,64
|
||||||
|
B2_LINK: shared,static
|
||||||
|
# B2_THREADING: threading=multi,single
|
||||||
|
B2_VARIANT: release
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
- FLAVOR: Visual Studio 2017 C++2a Strict
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
B2_CXXFLAGS: -permissive-
|
||||||
|
B2_CXXSTD: 2a
|
||||||
|
B2_TOOLSET: msvc-14.1
|
||||||
|
|
||||||
|
- FLAVOR: Visual Studio 2017 C++14/17
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
B2_CXXSTD: 14,17
|
||||||
|
B2_TOOLSET: msvc-14.1
|
||||||
|
|
||||||
|
- FLAVOR: cygwin (32-bit)
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
ADDPATH: C:\cygwin\bin;
|
||||||
|
B2_ADDRESS_MODEL: 32
|
||||||
|
B2_CXXSTD: 03,11,14,1z
|
||||||
|
B2_TOOLSET: gcc
|
||||||
|
|
||||||
|
- FLAVOR: cygwin (64-bit)
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
ADDPATH: C:\cygwin64\bin;
|
||||||
|
B2_ADDRESS_MODEL: 64
|
||||||
|
B2_CXXSTD: 03,11,14,1z
|
||||||
|
B2_TOOLSET: gcc
|
||||||
|
|
||||||
|
install:
|
||||||
|
- git clone --depth 1 https://github.com/boostorg/boost-ci.git C:\boost-ci-cloned
|
||||||
|
# Copy ci folder if not testing Boost.CI
|
||||||
|
- if NOT "%APPVEYOR_PROJECT_NAME%" == "boost-ci" xcopy /s /e /q /i /y C:\boost-ci-cloned\ci .\ci
|
||||||
|
- rmdir /s /q C:\boost-ci-cloned
|
||||||
|
- ci\appveyor\install.bat
|
||||||
|
|
||||||
|
build: off
|
||||||
|
|
||||||
|
test_script: ci\build.bat
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# Copyright 2019 - 2021 Alexander Grund
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
#
|
||||||
|
# Sample codecov configuration file. Edit as required
|
||||||
|
|
||||||
|
codecov:
|
||||||
|
max_report_age: off
|
||||||
|
require_ci_to_pass: yes
|
||||||
|
notify:
|
||||||
|
# Increase this if you have multiple coverage collection jobs
|
||||||
|
after_n_builds: 2
|
||||||
|
wait_for_ci: yes
|
||||||
|
|
||||||
|
parsers:
|
||||||
|
gcov:
|
||||||
|
branch_detection:
|
||||||
|
conditional: yes
|
||||||
|
loop: yes
|
||||||
|
method: no
|
||||||
|
macro: no
|
||||||
|
|
||||||
|
# Change how pull request comments look
|
||||||
|
comment:
|
||||||
|
layout: "reach,diff,flags,files,footer"
|
||||||
|
|
||||||
|
# Ignore specific files or folders. Glob patterns are supported.
|
||||||
|
# See https://docs.codecov.com/docs/ignoring-paths
|
||||||
|
ignore:
|
||||||
|
- libs/mpl/test/
|
||||||
|
- test/
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
#
|
||||||
|
# Copyright 2020-2021 Peter Dimov
|
||||||
|
# Copyright 2021 Andrey Semashev
|
||||||
|
# Copyright 2021-2024 Alexander Grund
|
||||||
|
# Copyright 2022-2025 James E. King III
|
||||||
|
#
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
#
|
||||||
|
# This workflow uses the Boost.CI reusable workflow which builds a variety of
|
||||||
|
# configurations of your project, runs tests, and generates code coverage reports.
|
||||||
|
#
|
||||||
|
# To use it, copy this file into your repository as `.github/workflows/ci.yml` and
|
||||||
|
# customize it appropriately.
|
||||||
|
#
|
||||||
|
---
|
||||||
|
name: Boost.CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- bugfix/**
|
||||||
|
- feature/**
|
||||||
|
- fix/**
|
||||||
|
- pr/**
|
||||||
|
paths-ignore:
|
||||||
|
- LICENSE
|
||||||
|
- meta/**
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
call-boost-ci:
|
||||||
|
name: Run Boost.CI
|
||||||
|
uses: boostorg/boost-ci/.github/workflows/reusable.yml@master
|
||||||
|
secrets:
|
||||||
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
||||||
|
COVERITY_SCAN_NOTIFICATION_EMAIL: ${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }}
|
||||||
|
COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Generated by `boostdep --cmake mpl`
|
||||||
|
# Copyright 2020, 2021 Peter Dimov
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# https://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.5...3.20)
|
||||||
|
|
||||||
|
project(boost_mpl VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||||
|
|
||||||
|
add_library(boost_mpl INTERFACE)
|
||||||
|
add_library(Boost::mpl ALIAS boost_mpl)
|
||||||
|
|
||||||
|
target_include_directories(boost_mpl INTERFACE include)
|
||||||
|
|
||||||
|
target_link_libraries(boost_mpl
|
||||||
|
INTERFACE
|
||||||
|
Boost::config
|
||||||
|
Boost::core
|
||||||
|
Boost::predef
|
||||||
|
Boost::preprocessor
|
||||||
|
Boost::static_assert
|
||||||
|
Boost::type_traits
|
||||||
|
Boost::utility
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
||||||
|
|
||||||
|
add_subdirectory(test)
|
||||||
|
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
Boost Software License - Version 1.0 - August 17th, 2003
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
do so, all subject to the following:
|
||||||
|
|
||||||
|
The copyright notices in the Software and this entire statement, including
|
||||||
|
the above license grant, this restriction and the following disclaimer,
|
||||||
|
must be included in all copies of the Software, in whole or in part, and
|
||||||
|
all derivative works of the Software, unless such copies or derivative
|
||||||
|
works are solely in the form of machine-executable object code generated by
|
||||||
|
a source language processor.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
MPL, part of collection of the [Boost C++ Libraries](https://github.com/boostorg), provides a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions.
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
Distributed under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt).
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* C++03
|
||||||
|
* Header Only
|
||||||
|
|
||||||
|
### Build Status
|
||||||
|
|
||||||
|
<!-- boost-ci/tools/makebadges.sh --project mpl --appveyor 49kygihpsvv2sps0 --codecov 31bBblRchG --coverity 15866 -->
|
||||||
|
| Branch | GHA CI | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
|
||||||
|
| :-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- |
|
||||||
|
| [`master`](https://github.com/boostorg/mpl/tree/master) | [](https://github.com/boostorg/mpl/actions?query=branch:master) | [](https://ci.appveyor.com/project/cppalliance/mpl/branch/master) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/tree/master) | [](https://pdimov.github.io/boostdep-report/master/mpl.html) | [](https://www.boost.org/doc/libs/master/libs/mpl) | [](https://www.boost.org/development/tests/master/developer/mpl.html)
|
||||||
|
| [`develop`](https://github.com/boostorg/mpl/tree/develop) | [](https://github.com/boostorg/mpl/actions?query=branch:develop) | [](https://ci.appveyor.com/project/cppalliance/mpl/branch/develop) | [](https://scan.coverity.com/projects/boostorg-mpl) | [](https://codecov.io/gh/boostorg/mpl/tree/develop) | [](https://pdimov.github.io/boostdep-report/develop/mpl.html) | [](https://www.boost.org/doc/libs/develop/libs/mpl) | [](https://www.boost.org/development/tests/develop/developer/mpl.html)
|
||||||
|
|
||||||
|
### Directories
|
||||||
|
|
||||||
|
| Name | Purpose |
|
||||||
|
| ----------- | ------------------------------ |
|
||||||
|
| `doc` | documentation |
|
||||||
|
| `example` | examples |
|
||||||
|
| `include` | headers |
|
||||||
|
| `test` | unit tests |
|
||||||
|
|
||||||
|
### More information
|
||||||
|
|
||||||
|
* [Ask questions](https://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-mpl)
|
||||||
|
* [Report bugs](https://github.com/boostorg/mpl/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
|
||||||
|
* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt).
|
||||||
|
* Discussions about the library are held on the [Boost developers mailing list](https://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](https://www.boost.org/community/policy.html) before posting and add the `[mpl]` tag at the beginning of the subject line.
|
||||||
|
|
||||||
Executable → Regular
@@ -0,0 +1,29 @@
|
|||||||
|
# Copyright René Ferdinand Rivera Morell 2023-2024
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
require-b2 5.2 ;
|
||||||
|
|
||||||
|
constant boost_dependencies :
|
||||||
|
/boost/config//boost_config
|
||||||
|
/boost/core//boost_core
|
||||||
|
/boost/predef//boost_predef
|
||||||
|
/boost/preprocessor//boost_preprocessor
|
||||||
|
/boost/static_assert//boost_static_assert
|
||||||
|
/boost/type_traits//boost_type_traits
|
||||||
|
/boost/utility//boost_utility ;
|
||||||
|
|
||||||
|
project /boost/mpl
|
||||||
|
: common-requirements
|
||||||
|
<include>include
|
||||||
|
;
|
||||||
|
|
||||||
|
explicit
|
||||||
|
[ alias boost_mpl : : : : <library>$(boost_dependencies) ]
|
||||||
|
[ alias all : boost_mpl example test ]
|
||||||
|
;
|
||||||
|
|
||||||
|
call-if : boost-library mpl
|
||||||
|
;
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
<div class="section" id="acknowledgements">
|
<div class="section" id="acknowledgements">
|
||||||
<h1><a class="toc-backref" href="../refmanual.html#id1614">Acknowledgements</a></h1>
|
<h1><a class="toc-backref" href="../refmanual.html#id1614">Acknowledgements</a></h1>
|
||||||
<p id="label-acknowledgements">The format and language of this reference documentation has been greatly influenced by
|
<p id="label-acknowledgements">The format and language of this reference documentation has been greatly influenced by
|
||||||
the SGI's <a class="reference external" href="http://www.sgi.com/tech/stl/" target="_top">Standard Template Library Programmer's Guide</a>.</p>
|
the SGI's <a class="reference external" href="https://boost.org/sgi/stl/" target="_top">Standard Template Library Programmer's Guide</a>.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-separator"></div>
|
<div class="footer-separator"></div>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ implementations by operating on <a class="reference internal" href="./iterators.
|
|||||||
major categories: iteration algorithms, querying algorithms, and
|
major categories: iteration algorithms, querying algorithms, and
|
||||||
transformation algorithms. The transformation algorithms introduce
|
transformation algorithms. The transformation algorithms introduce
|
||||||
an associated <a class="reference internal" href="./inserter.html">Inserter</a> concept, a rough equivalent for the notion of
|
an associated <a class="reference internal" href="./inserter.html">Inserter</a> concept, a rough equivalent for the notion of
|
||||||
<a class="reference external" href="http://www.sgi.com/tech/stl/OutputIterator.html" target="_top">Output Iterator</a> in the Standard Library. Moreover, every
|
<a class="reference external" href="https://boost.org/sgi/stl/OutputIterator.html" target="_top">Output Iterator</a> in the Standard Library. Moreover, every
|
||||||
transformation algorithm provides a <tt class="literal"><span class="pre">reverse_</span></tt> counterpart,
|
transformation algorithm provides a <tt class="literal"><span class="pre">reverse_</span></tt> counterpart,
|
||||||
allowing for a wider range of efficient transformations — a
|
allowing for a wider range of efficient transformations — a
|
||||||
common functionality documented by the <a class="reference internal" href="./reversible-algorithm.html">Reversible Algorithm</a>
|
common functionality documented by the <a class="reference internal" href="./reversible-algorithm.html">Reversible Algorithm</a>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ unspecified.</p>
|
|||||||
<div class="section" id="id30">
|
<div class="section" id="id30">
|
||||||
<h3><a class="subsection-title" href="#definitions" name="definitions">Definitions</a></h3>
|
<h3><a class="subsection-title" href="#definitions" name="definitions">Definitions</a></h3>
|
||||||
<ul class="simple" id="value-part">
|
<ul class="simple" id="value-part">
|
||||||
<span id="key-part"></span><li>A <em>key</em> is a part of the element type used to identify and retrieve
|
<li><span id="key-part"></span>A <em>key</em> is a part of the element type used to identify and retrieve
|
||||||
the element within the sequence.</li>
|
the element within the sequence.</li>
|
||||||
<li>A <em>value</em> is a part of the element type retrievied from the sequence
|
<li>A <em>value</em> is a part of the element type retrievied from the sequence
|
||||||
by its key.</li>
|
by its key.</li>
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ every element in the [<tt class="literal"><span class="pre"><a href="./begin.htm
|
|||||||
<td>A transformation.</td>
|
<td>A transformation.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr><td><tt class="literal"><span class="pre">f</span></tt></td>
|
<tr><td><tt class="literal"><span class="pre">f</span></tt></td>
|
||||||
<td>An <a class="reference external" href="http://www.sgi.com/tech/stl/UnaryFunction.html" target="_top">unary function object</a></td>
|
<td>An <a class="reference external" href="https://boost.org/sgi/stl/UnaryFunction.html" target="_top">unary function object</a></td>
|
||||||
<td>A runtime operation to apply.</td>
|
<td>A runtime operation to apply.</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -80,7 +80,7 @@ every element in the [<tt class="literal"><span class="pre"><a href="./begin.htm
|
|||||||
<div class="section" id="id816">
|
<div class="section" id="id816">
|
||||||
<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3>
|
<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3>
|
||||||
<p>For any <a class="reference internal" href="./forward-sequence.html">Forward Sequence</a> <tt class="literal"><span class="pre">s</span></tt>, <a class="reference internal" href="./lambda-expression.html">Lambda Expression</a> <tt class="literal"><span class="pre">op</span></tt> , and an
|
<p>For any <a class="reference internal" href="./forward-sequence.html">Forward Sequence</a> <tt class="literal"><span class="pre">s</span></tt>, <a class="reference internal" href="./lambda-expression.html">Lambda Expression</a> <tt class="literal"><span class="pre">op</span></tt> , and an
|
||||||
<a class="reference external" href="http://www.sgi.com/tech/stl/UnaryFunction.html" target="_top">unary function object</a> <tt class="literal"><span class="pre">f</span></tt>:</p>
|
<a class="reference external" href="https://boost.org/sgi/stl/UnaryFunction.html" target="_top">unary function object</a> <tt class="literal"><span class="pre">f</span></tt>:</p>
|
||||||
<pre class="literal-block">
|
<pre class="literal-block">
|
||||||
<a href="./for-each.html" class="identifier">for_each</a><s>( f );
|
<a href="./for-each.html" class="identifier">for_each</a><s>( f );
|
||||||
</pre>
|
</pre>
|
||||||
|
|||||||
@@ -0,0 +1,122 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="generator" content="Docutils 0.7: http://docutils.sourceforge.net/" />
|
||||||
|
<title>The MPL Reference Manual: BOOST_MPL_GET_TAG_DEF</title>
|
||||||
|
<link rel="stylesheet" href="../style.css" type="text/css" />
|
||||||
|
</head>
|
||||||
|
<body class="docframe refmanual">
|
||||||
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Prev</a> <a href="./has-xxx-trait-named-def.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Back</a> <a href="./get-tag-def.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Up</a> <a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
|
<td class="header-group page-location"><a href="../refmanual.html" class="navigation-link">Front Page</a> / <a href="./macros.html" class="navigation-link">Macros</a> / <a href="./introspection.html" class="navigation-link">Introspection</a> / <a href="./has-xxx-trait-def.html" class="navigation-link">BOOST_MPL_GET_TAG_DEF</a></td>
|
||||||
|
</tr></table><div class="header-separator"></div>
|
||||||
|
<div class="section" id="boost-mpl-has-xxx-trait-def">
|
||||||
|
<h1><a class="toc-backref" href="./introspection.html#id1595">BOOST_MPL_GET_TAG_DEF</a></h1>
|
||||||
|
<div class="section" id="id1329">
|
||||||
|
<h3><a class="subsection-title" href="#synopsis" name="synopsis">Synopsis</a></h3>
|
||||||
|
<pre class="literal-block">
|
||||||
|
#define <a href="./has-xxx-trait-def.html" class="identifier">BOOST_MPL_GET_TAG_DEF</a>(name) \
|
||||||
|
<em>unspecified token sequence</em> \
|
||||||
|
/**/
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1330">
|
||||||
|
<h3><a class="subsection-title" href="#description" name="description">Description</a></h3>
|
||||||
|
<p>Expands into a definition of a lazy getter <a class="reference internal" href="./metafunction.html">Metafunction</a> <tt class="literal"><span class="pre">get_tag_name</span></tt>
|
||||||
|
such that for any type <tt class="literal"><span class="pre">x</span></tt> <tt class="literal"><span class="pre">get_tag_name<x>::type</span> <span class="pre">is</span> <span class="pre">type</span></tt> where
|
||||||
|
<tt class="literal"><span class="pre">name</span></tt> is a nested type member of <tt class="literal"><span class="pre">x</span></tt>.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1331">
|
||||||
|
<h3><a class="subsection-title" href="#header" name="header">Header</a></h3>
|
||||||
|
<pre class="literal-block">
|
||||||
|
#include <<a href="../../../../boost/mpl/get_tag.hpp" class="header">boost/mpl/get_tag.hpp</a>>
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1332">
|
||||||
|
<h3><a class="subsection-title" href="#parameters" name="parameters">Parameters</a></h3>
|
||||||
|
<table border="1" class="docutils table">
|
||||||
|
<colgroup>
|
||||||
|
<col width="15%" />
|
||||||
|
<col width="32%" />
|
||||||
|
<col width="53%" />
|
||||||
|
</colgroup>
|
||||||
|
<thead valign="bottom">
|
||||||
|
<tr><th class="head">Parameter</th>
|
||||||
|
<th class="head">Requirement</th>
|
||||||
|
<th class="head">Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr><td><tt class="literal"><span class="pre">name</span></tt></td>
|
||||||
|
<td>A legal identifier token</td>
|
||||||
|
<td>A name of the member to get.</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1333">
|
||||||
|
<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3>
|
||||||
|
<p>For any legal C++ identifier <tt class="literal"><span class="pre">name</span></tt>:</p>
|
||||||
|
<pre class="literal-block">
|
||||||
|
<a href="./has-xxx-trait-def.html" class="identifier">BOOST_MPL_GET_TAG_DEF</a>(name)
|
||||||
|
</pre>
|
||||||
|
<table class="docutils field-list" frame="void" rules="none">
|
||||||
|
<col class="field-name" />
|
||||||
|
<col class="field-body" />
|
||||||
|
<tbody valign="top">
|
||||||
|
<tr class="field"><th class="field-name">Precondition:</th><td class="field-body"><p class="first">Appears at namespace scope.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="field"><th class="field-name">Return type:</th><td class="field-body"><p class="first">None.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="field"><th class="field-name">Semantics:</th><td class="field-body"><p class="first">Equivalent to</p>
|
||||||
|
<pre class="last literal-block">
|
||||||
|
namespace boost { namespace mpl {</pre>
|
||||||
|
<pre class="last literal-block">
|
||||||
|
template<class T>
|
||||||
|
struct get_##name {
|
||||||
|
typedef typename T::name type;
|
||||||
|
};</pre>
|
||||||
|
<pre class="last literal-block">
|
||||||
|
}}
|
||||||
|
</pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1334">
|
||||||
|
<h3><a class="subsection-title" href="#example" name="example">Example</a></h3>
|
||||||
|
<pre class="literal-block">
|
||||||
|
struct test_type_get_tag_def;
|
||||||
|
|
||||||
|
<a href="get-tag-def.html" class="identifier">BOOST_MPL_GET_TAG_DEF</a>(a_tag);
|
||||||
|
|
||||||
|
namespace boost { namespace mpl {
|
||||||
|
|
||||||
|
struct test_type_get_tag_def
|
||||||
|
{
|
||||||
|
typedef int a_tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
typedef boost::mpl::get_a_tag<test_type_get_tag_def>::type got_the_tag;
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<div class="section" id="id1335">
|
||||||
|
<h3><a class="subsection-title" href="#see-also" name="see-also">See also</a></h3>
|
||||||
|
<p><a class="reference internal" href="./macros.html">Macros</a>, <a class="reference internal" href="./has-xxx-trait-named-def.html">BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF</a></p>
|
||||||
|
<!-- Macros/Introspection/BOOST_MPL_GET_TAG_DEF -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer-separator"></div>
|
||||||
|
<table class="footer"><tr class="footer"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Prev</a> <a href="./has-xxx-template-named-def.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Back</a> <a href="./get-tag-def.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./introspection.html" class="navigation-link">Up</a> <a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
|
<td><div class="copyright-footer"><div class="copyright">Copyright © 2017 Sergey Krivonos and Edward Diener</div>
|
||||||
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
file LICENSE_1_0.txt or copy at <a class="reference external" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)</div></td></tr></table></body>
|
||||||
|
</html>
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<h1><a class="toc-backref" href="./algorithms-concepts.html#id1462">Inserter</a></h1>
|
<h1><a class="toc-backref" href="./algorithms-concepts.html#id1462">Inserter</a></h1>
|
||||||
<div class="section" id="id454">
|
<div class="section" id="id454">
|
||||||
<h3><a class="subsection-title" href="#description" name="description">Description</a></h3>
|
<h3><a class="subsection-title" href="#description" name="description">Description</a></h3>
|
||||||
<p>An <a class="reference internal" href="./inserter.html">Inserter</a> is a compile-time substitute for STL <a class="reference external" href="http://www.sgi.com/tech/stl/OutputIterator.html" target="_top">Output Iterator</a>.
|
<p>An <a class="reference internal" href="./inserter.html">Inserter</a> is a compile-time substitute for STL <a class="reference external" href="https://boost.org/sgi/stl/OutputIterator.html" target="_top">Output Iterator</a>.
|
||||||
Under the hood, it's simply a type holding
|
Under the hood, it's simply a type holding
|
||||||
two entities: a <em>state</em> and an <em>operation</em>. When passed to a
|
two entities: a <em>state</em> and an <em>operation</em>. When passed to a
|
||||||
<a class="reference internal" href="./transformation-algorithms.html">transformation algorithm</a>, the inserter's binary operation is
|
<a class="reference internal" href="./transformation-algorithms.html">transformation algorithm</a>, the inserter's binary operation is
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
<!-- Software License, Version 1.0. (See accompanying -->
|
<!-- 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) -->
|
||||||
<ul class="toc simple" id="outline">
|
<ul class="toc simple" id="outline">
|
||||||
|
<li><a class="reference internal" href="./get-tag-def.html" id="id1615">BOOST_MPL_GET_TAG_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-template-def.html" id="id1593">BOOST_MPL_HAS_XXX_TEMPLATE_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-template-def.html" id="id1593">BOOST_MPL_HAS_XXX_TEMPLATE_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-template-named-def.html" id="id1594">BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-template-named-def.html" id="id1594">BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-trait-def.html" id="id1595">BOOST_MPL_HAS_XXX_TRAIT_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-trait-def.html" id="id1595">BOOST_MPL_HAS_XXX_TRAIT_DEF</a></li>
|
||||||
|
|||||||
@@ -276,6 +276,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a class="reference internal" href="./introspection.html" id="id1592">Introspection</a><ul class="toc" id="outline">
|
<li><a class="reference internal" href="./introspection.html" id="id1592">Introspection</a><ul class="toc" id="outline">
|
||||||
|
<li><a class="reference internal" href="./get-tag-def.html" id="id1615">BOOST_MPL_GET_TAG_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-template-def.html" id="id1593">BOOST_MPL_HAS_XXX_TEMPLATE_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-template-def.html" id="id1593">BOOST_MPL_HAS_XXX_TEMPLATE_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-template-named-def.html" id="id1594">BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-template-named-def.html" id="id1594">BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF</a></li>
|
||||||
<li><a class="reference internal" href="./has-xxx-trait-def.html" id="id1595">BOOST_MPL_HAS_XXX_TRAIT_DEF</a></li>
|
<li><a class="reference internal" href="./has-xxx-trait-def.html" id="id1595">BOOST_MPL_HAS_XXX_TRAIT_DEF</a></li>
|
||||||
|
|||||||
@@ -126,13 +126,13 @@ struct bitset0
|
|||||||
// ...
|
// ...
|
||||||
};
|
};
|
||||||
|
|
||||||
template< typename B0 > struct bitset1
|
template< typename B0 > struct bitset1
|
||||||
{
|
{
|
||||||
typedef bitset_tag tag;
|
typedef bitset_tag tag;
|
||||||
// ...
|
// ...
|
||||||
};
|
};
|
||||||
|
|
||||||
template< typename B0, <em>...,</em> typename B<em>n</em> > struct bitset<em>n</em>
|
template< typename B0, <em>...,</em> typename B<em>n</em> > struct bitset<em>n</em>
|
||||||
{
|
{
|
||||||
typedef bitset_tag tag;
|
typedef bitset_tag tag;
|
||||||
// ...
|
// ...
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<div class="section" id="terminology">
|
<div class="section" id="terminology">
|
||||||
<h1><a class="toc-backref" href="../refmanual.html#id1610">Terminology</a></h1>
|
<h1><a class="toc-backref" href="../refmanual.html#id1610">Terminology</a></h1>
|
||||||
<dl class="docutils" id="overloaded-name">
|
<dl class="docutils" id="overloaded-name">
|
||||||
<span id="label-terminology"></span><dt>Overloaded name</dt>
|
<dt><span id="label-terminology"></span>Overloaded name</dt>
|
||||||
<dd>Overloaded name is a term used in this reference documentation to designate
|
<dd>Overloaded name is a term used in this reference documentation to designate
|
||||||
a metafunction providing more than one public interface. In reality,
|
a metafunction providing more than one public interface. In reality,
|
||||||
class template overloading is nonexistent and the referenced functionality
|
class template overloading is nonexistent and the referenced functionality
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ ones by performing some kind of transformation. A typical transformation
|
|||||||
alogrithm takes one or more input sequences and a transformation
|
alogrithm takes one or more input sequences and a transformation
|
||||||
metafunction/predicate, and returns a new sequence built according to the
|
metafunction/predicate, and returns a new sequence built according to the
|
||||||
algorithm's semantics through the means of its <a class="reference internal" href="./inserter.html">Inserter</a> argument, which
|
algorithm's semantics through the means of its <a class="reference internal" href="./inserter.html">Inserter</a> argument, which
|
||||||
plays a role similar to the role of run-time <a class="reference external" href="http://www.sgi.com/tech/stl/OutputIterator.html" target="_top">Output Iterator</a>.</p>
|
plays a role similar to the role of run-time <a class="reference external" href="https://boost.org/sgi/stl/OutputIterator.html" target="_top">Output Iterator</a>.</p>
|
||||||
<!-- Say something about optionality of Inserters/their default behavior -->
|
<!-- Say something about optionality of Inserters/their default behavior -->
|
||||||
<p>Every transformation algorithm is a <a class="reference internal" href="./reversible-algorithm.html">Reversible Algorithm</a>, providing
|
<p>Every transformation algorithm is a <a class="reference internal" href="./reversible-algorithm.html">Reversible Algorithm</a>, providing
|
||||||
an accordingly named <tt class="literal"><span class="pre">reverse_</span></tt> counterpart carrying the transformation
|
an accordingly named <tt class="literal"><span class="pre">reverse_</span></tt> counterpart carrying the transformation
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
The format and language of this reference documentation has been greatly influenced by
|
The format and language of this reference documentation has been greatly influenced by
|
||||||
the SGI's `Standard Template Library Programmer's Guide`__.
|
the SGI's `Standard Template Library Programmer's Guide`__.
|
||||||
|
|
||||||
__ http://www.sgi.com/tech/stl/
|
__ https://boost.org/sgi/stl/
|
||||||
|
|
||||||
|
|
||||||
.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
|
.. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ common functionality documented by the |Reversible Algorithm|
|
|||||||
concept.
|
concept.
|
||||||
|
|
||||||
|
|
||||||
.. |Output Iterator| replace:: `Output Iterator <http://www.sgi.com/tech/stl/OutputIterator.html>`__
|
.. |Output Iterator| replace:: `Output Iterator <https://boost.org/sgi/stl/OutputIterator.html>`__
|
||||||
.. |sequence algorithms| replace:: `sequence algorithms`_
|
.. |sequence algorithms| replace:: `sequence algorithms`_
|
||||||
.. _`sequence algorithms`: `Algorithms`_
|
.. _`sequence algorithms`: `Algorithms`_
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ See also
|
|||||||
|
|
||||||
|Runtime Algorithms|, |Views|, |transform_view|
|
|Runtime Algorithms|, |Views|, |transform_view|
|
||||||
|
|
||||||
.. |unary function object| replace:: `unary function object <http://www.sgi.com/tech/stl/UnaryFunction.html>`__
|
.. |unary function object| replace:: `unary function object <https://boost.org/sgi/stl/UnaryFunction.html>`__
|
||||||
.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`__
|
.. |value_initialized| replace:: `value_initialized <http://www.boost.org/libs/utility/value_init.htm>`__
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Prev</a> <a href="./iterator-protocol.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back <a href="./iterator-protocol.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Prev</a> <a href="./iterator-protocol.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back <a href="./iterator-protocol.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./apply-lambda-semantics.html" class="navigation-link">apply/lambda Semantics</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./apply-lambda-semantics.html" class="navigation-link">apply/lambda Semantics</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="apply-lambda-semantics">
|
<div class="section" id="apply-lambda-semantics">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id64" name="apply-lambda-semantics"><tt class="literal"><span class="pre">apply</span></tt>/<tt class="literal"><span class="pre">lambda</span></tt> Semantics</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id64" name="apply-lambda-semantics"><tt class="literal"><span class="pre">apply</span></tt>/<tt class="literal"><span class="pre">lambda</span></tt> Semantics</a></h1>
|
||||||
|
|||||||
@@ -7,12 +7,12 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<meta name="generator" content="Docutils 0.3.6: http://docutils.sourceforge.net/" />
|
<meta name="generator" content="Docutils 0.3.6: http://docutils.sourceforge.net/" />
|
||||||
<title>THE BOOST MPL LIBRARY: Changelog & History</title>
|
<title>THE BOOST MPL LIBRARY: Changelog & History</title>
|
||||||
<link rel="stylesheet" href="../style.css" type="text/css" />
|
<link rel="stylesheet" href="../style.css" type="text/css" />
|
||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./reference-manual.html" class="navigation-link">Prev</a> <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./reference-manual.html" class="navigation-link">Back</a> <a href="./technical-details.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="../index.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./reference-manual.html" class="navigation-link">Prev</a> <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./reference-manual.html" class="navigation-link">Back</a> <a href="./technical-details.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="../index.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="changelog-history">
|
<div class="section" id="changelog-history">
|
||||||
<h1><a class="toc-backref" href="../index.html#id62" name="changelog-history">Changelog & History</a></h1>
|
<h1><a class="toc-backref" href="../index.html#id62" name="changelog-history">Changelog & History</a></h1>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./changelog-history.html" class="navigation-link">Prev</a> <a href="./apply-lambda-semantics.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back Along</span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changelog-history.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./changelog-history.html" class="navigation-link">Prev</a> <a href="./apply-lambda-semantics.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group">Back Along</span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changelog-history.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="changes-in-boost-1-32-0">
|
<div class="section" id="changes-in-boost-1-32-0">
|
||||||
<h1><a class="toc-backref" href="./changelog-history.html#id63" name="changes-in-boost-1-32-0">Changes in Boost 1.32.0 Release</a></h1>
|
<h1><a class="toc-backref" href="./changelog-history.html#id63" name="changes-in-boost-1-32-0">Changes in Boost 1.32.0 Release</a></h1>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./apply-lambda-semantics.html" class="navigation-link">Prev</a> <a href="./tag-dispatching-protocol.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./apply-lambda-semantics.html" class="navigation-link">Back</a> <a href="./tag-dispatching-protocol.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./apply-lambda-semantics.html" class="navigation-link">Prev</a> <a href="./tag-dispatching-protocol.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./apply-lambda-semantics.html" class="navigation-link">Back</a> <a href="./tag-dispatching-protocol.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./iterator-protocol.html" class="navigation-link">Iterator Protocol</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./iterator-protocol.html" class="navigation-link">Iterator Protocol</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="iterator-protocol">
|
<div class="section" id="iterator-protocol">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id65" name="iterator-protocol">Iterator Protocol</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id65" name="iterator-protocol">Iterator Protocol</a></h1>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./renaming-cleanup.html" class="navigation-link">Prev</a> <a href="./technical-details.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./renaming-cleanup.html" class="navigation-link">Back</a> Along</span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./renaming-cleanup.html" class="navigation-link">Prev</a> <a href="./technical-details.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./renaming-cleanup.html" class="navigation-link">Back</a> Along</span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./miscellaneous.html" class="navigation-link">Miscellaneous</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./miscellaneous.html" class="navigation-link">Miscellaneous</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="miscellaneous">
|
<div class="section" id="miscellaneous">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id69" name="miscellaneous">Miscellaneous</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id69" name="miscellaneous">Miscellaneous</a></h1>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./tag-dispatching-protocol.html" class="navigation-link">Prev</a> <a href="./renaming-cleanup.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tag-dispatching-protocol.html" class="navigation-link">Back</a> <a href="./renaming-cleanup.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./tag-dispatching-protocol.html" class="navigation-link">Prev</a> <a href="./renaming-cleanup.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tag-dispatching-protocol.html" class="navigation-link">Back</a> <a href="./renaming-cleanup.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./numeric-metafunction.html" class="navigation-link">Numeric Metafunction Protocol/Infrastructure</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./numeric-metafunction.html" class="navigation-link">Numeric Metafunction Protocol/Infrastructure</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="numeric-metafunction">
|
<div class="section" id="numeric-metafunction">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id67" name="numeric-metafunction">Numeric Metafunction Protocol/Infrastructure</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id67" name="numeric-metafunction">Numeric Metafunction Protocol/Infrastructure</a></h1>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./numeric-metafunction.html" class="navigation-link">Prev</a> <a href="./miscellaneous.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./numeric-metafunction.html" class="navigation-link">Back</a> <a href="./miscellaneous.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./numeric-metafunction.html" class="navigation-link">Prev</a> <a href="./miscellaneous.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./numeric-metafunction.html" class="navigation-link">Back</a> <a href="./miscellaneous.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./renaming-cleanup.html" class="navigation-link">Renaming/Cleanup</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./renaming-cleanup.html" class="navigation-link">Renaming/Cleanup</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="renaming-cleanup">
|
<div class="section" id="renaming-cleanup">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id68" name="renaming-cleanup">Renaming/Cleanup</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id68" name="renaming-cleanup">Renaming/Cleanup</a></h1>
|
||||||
|
|||||||
@@ -33,12 +33,12 @@ Complete Guide</a>", by David Vandevoorde and Nicolai M. Josuttis — <em>t
|
|||||||
on the details and workings of the C++ template system.</p>
|
on the details and workings of the C++ template system.</p>
|
||||||
<p>We can also recommend a number online resources:</p>
|
<p>We can also recommend a number online resources:</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li>Todd L. Veldhuizen, "<a class="reference" href="http://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html" target="_top">Using C++ template metaprograms</a>", C++ Report
|
<li>Todd L. Veldhuizen, "<a class="reference" href="https://dl.acm.org/citation.cfm?id=260748" target="_top">Using C++ template metaprograms</a>", C++ Report
|
||||||
Vol. 7 No. 4 (May 1995), pp. 36-43.</li>
|
Vol. 7 No. 4 (May 1995), pp. 36-43.</li>
|
||||||
<li>Todd L. Veldhuizen and Dennis Gannon, "<a class="reference" href="http://osl.iu.edu/~tveldhui/papers/oo98.html" target="_top">Active Libraries: Rethinking the roles of
|
<li>Todd L. Veldhuizen and Dennis Gannon, "<a class="reference" href="https://arxiv.org/abs/math/9810022" target="_top">Active Libraries: Rethinking the roles of
|
||||||
compilers and libraries</a>", SIAM Workshop on Object Oriented Methods for Inter-operable
|
compilers and libraries</a>", SIAM Workshop on Object Oriented Methods for Inter-operable
|
||||||
Scientific and Engineering Computing, October 21-23, 1998</li>
|
Scientific and Engineering Computing, October 21-23, 1998</li>
|
||||||
<li>Todd L. Veldhuizen, "<a class="reference" href="http://osl.iu.edu/~tveldhui/papers/pepm99/" target="_top">C++ Templates as Partial Evaluation</a>", 1999 ACM SIGPLAN
|
<li>Todd L. Veldhuizen, "<a class="reference" href="https://arxiv.org/abs/cs/9810010" target="_top">C++ Templates as Partial Evaluation</a>", 1999 ACM SIGPLAN
|
||||||
Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'99).</li>
|
Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'99).</li>
|
||||||
</ul>
|
</ul>
|
||||||
<!-- What about Todd's PhD dissertation? Too far off the beaten track? -->
|
<!-- What about Todd's PhD dissertation? Too far off the beaten track? -->
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body class="docframe">
|
<body class="docframe">
|
||||||
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./iterator-protocol.html" class="navigation-link">Prev</a> <a href="./numeric-metafunction.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./iterator-protocol.html" class="navigation-link">Back</a> <a href="./numeric-metafunction.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./iterator-protocol.html" class="navigation-link">Prev</a> <a href="./numeric-metafunction.html" class="navigation-link">Next</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./iterator-protocol.html" class="navigation-link">Back</a> <a href="./numeric-metafunction.html" class="navigation-link">Along</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./changes-in-boost-1-32-0.html" class="navigation-link">Up</a> <a href="../index.html" class="navigation-link">Home</a></span><span class="navigation-group-separator"> | </span><span class="navigation-group"><a href="./tutorial_toc.html" class="navigation-link">Full TOC</a></span></td>
|
||||||
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./tag-dispatching-protocol.html" class="navigation-link">Tag Dispatching Protocol</a></td>
|
<td class="header-group page-location"><a href="../index.html" class="navigation-link">Front Page</a> / <a href="./changelog-history.html" class="navigation-link">Changelog & History</a> / <a href="./changes-in-boost-1-32-0.html" class="navigation-link">Changes in Boost 1.32.0 Release</a> / <a href="./tag-dispatching-protocol.html" class="navigation-link">Tag Dispatching Protocol</a></td>
|
||||||
</tr></table><div class="header-separator"></div>
|
</tr></table><div class="header-separator"></div>
|
||||||
<div class="section" id="tag-dispatching-protocol">
|
<div class="section" id="tag-dispatching-protocol">
|
||||||
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id66" name="tag-dispatching-protocol">Tag Dispatching Protocol</a></h1>
|
<h1><a class="toc-backref" href="./changes-in-boost-1-32-0.html#id66" name="tag-dispatching-protocol">Tag Dispatching Protocol</a></h1>
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Boost.MPL Library example Jamfile
|
||||||
|
#
|
||||||
|
# Copyright (c) 2008 James E. King III
|
||||||
|
#
|
||||||
|
# Distributed under the Boost Software License, Version 1.0. (See accompany-
|
||||||
|
# ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
import testing ;
|
||||||
|
|
||||||
|
project : requirements <library>/boost/mpl//boost_mpl ;
|
||||||
|
|
||||||
|
test-suite "mpl-examples"
|
||||||
|
: [ run inherit_linearly.cpp ]
|
||||||
|
[ compile integer.cpp ]
|
||||||
|
[ run tuple_from_list.cpp : : : <library>/boost/tuple//boost_tuple ]
|
||||||
|
;
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
// $Revision$
|
// $Revision$
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
|
||||||
namespace fsm { namespace aux {
|
namespace fsm { namespace aux {
|
||||||
|
|
||||||
@@ -25,13 +26,32 @@ struct base_event
|
|||||||
public:
|
public:
|
||||||
virtual ~base_event() {};
|
virtual ~base_event() {};
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_CXX11_SMART_PTR)
|
||||||
|
|
||||||
std::auto_ptr<base_event> clone() const
|
std::auto_ptr<base_event> clone() const
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
std::unique_ptr<base_event> clone() const
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
return do_clone();
|
return do_clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_CXX11_SMART_PTR)
|
||||||
|
|
||||||
virtual std::auto_ptr<base_event> do_clone() const = 0;
|
virtual std::auto_ptr<base_event> do_clone() const = 0;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
virtual std::unique_ptr<base_event> do_clone() const = 0;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -26,12 +26,27 @@ struct event
|
|||||||
typedef base_event base_t;
|
typedef base_event base_t;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_CXX11_SMART_PTR)
|
||||||
|
|
||||||
virtual std::auto_ptr<base_event> do_clone() const
|
virtual std::auto_ptr<base_event> do_clone() const
|
||||||
{
|
{
|
||||||
return std::auto_ptr<base_event>(
|
return std::auto_ptr<base_event>(
|
||||||
new Derived(static_cast<Derived const&>(*this))
|
new Derived(static_cast<Derived const&>(*this))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
virtual std::unique_ptr<base_event> do_clone() const
|
||||||
|
{
|
||||||
|
return std::unique_ptr<base_event>(
|
||||||
|
new Derived(static_cast<Derived const&>(*this))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|||||||
Executable → Regular
Executable → Regular
@@ -83,7 +83,17 @@ class state_machine
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(BOOST_NO_CXX11_SMART_PTR)
|
||||||
|
|
||||||
void post_event(std::auto_ptr<base_event_t const> evt)
|
void post_event(std::auto_ptr<base_event_t const> evt)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void post_event(std::unique_ptr<base_event_t const> evt)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
m_events_queue.push(base_event_ptr_t(evt.release()));
|
m_events_queue.push(base_event_ptr_t(evt.release()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,26 +28,22 @@
|
|||||||
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
|
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(and)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'and' being an alternative token
|
// about 'and' being an alternative token
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
#if defined(and)
|
||||||
#if defined(and)
|
|
||||||
# pragma push_macro("and")
|
# pragma push_macro("and")
|
||||||
# undef and
|
# undef and
|
||||||
# define and(x)
|
# define and(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
|
# define BOOST_MPL_PREPROCESSED_HEADER and.hpp
|
||||||
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
#if defined(and)
|
||||||
#if defined(and)
|
|
||||||
# pragma pop_macro("and")
|
# pragma pop_macro("and")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
#include <boost/mpl/if.hpp>
|
#include <boost/mpl/if.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| (BOOST_MPL_CFG_GCC != 0) \
|
|| (BOOST_MPL_CFG_GCC != 0) \
|
||||||
|| BOOST_WORKAROUND(__IBMCPP__, <= 600)
|
|| BOOST_WORKAROUND(__IBMCPP__, <= 600)
|
||||||
# define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
|
# define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
|
||||||
@@ -47,16 +47,16 @@
|
|||||||
|
|
||||||
#if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \
|
#if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \
|
||||||
|| BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
|
|| BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
|
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
|
||||||
# define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
|
# define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants)
|
// agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants)
|
||||||
// and GCC (which issues "unused variable" warnings when static constants are used
|
// and GCC/PGI/Clang (which issues "unused variable" warnings when static constants are used
|
||||||
// at a function scope)
|
// at a function scope)
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0)
|
|| (BOOST_MPL_CFG_GCC != 0) || (BOOST_MPL_CFG_GPU != 0) || defined(__PGI) || defined(__clang__)
|
||||||
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
|
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
|
||||||
#else
|
#else
|
||||||
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
|
# define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
|
||||||
@@ -184,16 +184,27 @@ template< typename P > struct assert_arg_pred_not
|
|||||||
typedef typename assert_arg_pred_impl<p>::type type;
|
typedef typename assert_arg_pred_impl<p>::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if BOOST_WORKAROUND(BOOST_GCC_VERSION, >= 80000)
|
||||||
|
#define BOOST_MPL_IGNORE_PARENTHESES_WARNING
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic ignored "-Wparentheses"
|
||||||
|
#endif
|
||||||
|
|
||||||
template< typename Pred >
|
template< typename Pred >
|
||||||
failed ************ (Pred::************
|
failed ************ (Pred::************
|
||||||
assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
|
assert_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type )
|
||||||
);
|
);
|
||||||
|
|
||||||
template< typename Pred >
|
template< typename Pred >
|
||||||
failed ************ (boost::mpl::not_<Pred>::************
|
failed ************ (boost::mpl::not_<Pred>::************
|
||||||
assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
|
assert_not_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type )
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifdef BOOST_MPL_IGNORE_PARENTHESES_WARNING
|
||||||
|
#undef BOOST_MPL_IGNORE_PARENTHESES_WARNING
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
template< typename Pred >
|
template< typename Pred >
|
||||||
AUX778076_ASSERT_ARG(assert<false>)
|
AUX778076_ASSERT_ARG(assert<false>)
|
||||||
assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
|
assert_arg( void (*)(Pred), typename assert_arg_pred_not<Pred>::type );
|
||||||
@@ -286,7 +297,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
|
|||||||
std::size_t \
|
std::size_t \
|
||||||
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
||||||
boost::mpl::assertion_failed<false>( \
|
boost::mpl::assertion_failed<false>( \
|
||||||
boost::mpl::assert_arg( (void (*) pred)0, 1 ) \
|
boost::mpl::assert_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
@@ -299,7 +310,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
|
|||||||
enum { \
|
enum { \
|
||||||
BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
||||||
boost::mpl::assertion<false>::failed( \
|
boost::mpl::assertion<false>::failed( \
|
||||||
boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
|
boost::mpl::assert_not_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
}\
|
}\
|
||||||
@@ -310,7 +321,7 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
|
|||||||
std::size_t \
|
std::size_t \
|
||||||
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
, BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
|
||||||
boost::mpl::assertion_failed<false>( \
|
boost::mpl::assertion_failed<false>( \
|
||||||
boost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
|
boost::mpl::assert_not_arg( (void (*) pred)BOOST_NULLPTR, 1 ) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
) \
|
) \
|
||||||
@@ -432,8 +443,17 @@ BOOST_MPL_AUX_ASSERT_CONSTANT( \
|
|||||||
/**/
|
/**/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
|
#if 0
|
||||||
|
// Work around BOOST_MPL_ASSERT_MSG_IMPL generating multiple definition linker errors on VC++8.
|
||||||
|
// #if defined(BOOST_MSVC) && BOOST_MSVC < 1500
|
||||||
|
# include <boost/static_assert.hpp>
|
||||||
|
# define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
|
||||||
|
BOOST_STATIC_ASSERT_MSG( c, #msg ) \
|
||||||
|
/**/
|
||||||
|
#else
|
||||||
|
# define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
|
||||||
BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
|
BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
|
||||||
/**/
|
/**/
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // BOOST_MPL_ASSERT_HPP_INCLUDED
|
#endif // BOOST_MPL_ASSERT_HPP_INCLUDED
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, < 0x561)
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, < 0x561)
|
||||||
// agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class
|
// agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class
|
||||||
// and function named 'xxx'" diagnostic
|
// and function named 'xxx'" diagnostic
|
||||||
# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
|
# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
|
||||||
@@ -29,6 +29,6 @@ template< typename > void name(); \
|
|||||||
|
|
||||||
# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
|
# define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
|
||||||
|
|
||||||
#endif // __BORLANDC__
|
#endif // BOOST_BORLANDC
|
||||||
|
|
||||||
#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
|
#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
|
#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
|
||||||
&& ( BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|
&& ( BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
|
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
|
||||||
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
|
|| BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
|
||||||
|| BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
|
|| BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
|
#if !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
&& ( BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
|| BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
|
#if !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, >= 0x590) \
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x590) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_BCC590_WORKAROUNDS
|
# define BOOST_MPL_CFG_BCC590_WORKAROUNDS
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \
|
#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
&& ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_NO_BIND_TEMPLATE
|
# define BOOST_MPL_CFG_NO_BIND_TEMPLATE
|
||||||
|
|||||||
@@ -32,10 +32,10 @@
|
|||||||
# elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
|
# elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
|
||||||
# define BOOST_MPL_CFG_COMPILER_DIR gcc
|
# define BOOST_MPL_CFG_COMPILER_DIR gcc
|
||||||
|
|
||||||
# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
# elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
# if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
|
# if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
|
||||||
# define BOOST_MPL_CFG_COMPILER_DIR bcc551
|
# define BOOST_MPL_CFG_COMPILER_DIR bcc551
|
||||||
# elif BOOST_WORKAROUND(__BORLANDC__, >= 0x590)
|
# elif BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x590)
|
||||||
# define BOOST_MPL_CFG_COMPILER_DIR bcc
|
# define BOOST_MPL_CFG_COMPILER_DIR bcc
|
||||||
# else
|
# else
|
||||||
# define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
|
# define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
|
#if !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, < 0x582)
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, < 0x582)
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
|
# define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
|
||||||
|
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, >= 0x560) \
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, >= 0x560) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
|
# define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
#if !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
#if !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& ( BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
|
&& ( BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
|| defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) \
|
#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_NO_NESTED_FORWARDING
|
# define BOOST_MPL_CFG_NO_NESTED_FORWARDING
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
|
#if !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
&& BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
|
# define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) \
|
#if !defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) \
|
||||||
&& ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
&& ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
|| BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \
|
|| BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \
|
||||||
|| BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \
|
|| BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \
|
||||||
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
|
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
|
#if !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& ( BOOST_WORKAROUND(__BORLANDC__, < 0x590) \
|
&& ( BOOST_WORKAROUND(BOOST_BORLANDC, < 0x590) \
|
||||||
|| BOOST_WORKAROUND(__MWERKS__, < 0x3001) \
|
|| BOOST_WORKAROUND(__MWERKS__, < 0x3001) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
|
#if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
|
||||||
&& ( BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
|
&& ( BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, < 0x582) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, < 0x582) \
|
||||||
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
|
#if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
|
||||||
&& ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \
|
&& ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \
|
||||||
|| BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x590) ) \
|
|| BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT( 0x590) ) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
|
# define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
|
#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
|
||||||
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
&& !defined(BOOST_MPL_PREPROCESSING_MODE) \
|
||||||
&& ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
|
&& ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) \
|
||||||
)
|
)
|
||||||
|
|
||||||
# define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
|
# define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace boost { namespace mpl {
|
|||||||
template< typename Tag > struct count_impl
|
template< typename Tag > struct count_impl
|
||||||
{
|
{
|
||||||
template< typename Sequence, typename T > struct apply
|
template< typename Sequence, typename T > struct apply
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x561))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC,BOOST_TESTED_AT(0x561))
|
||||||
{
|
{
|
||||||
typedef typename count_if< Sequence,same_as<T> >::type type;
|
typedef typename count_if< Sequence,same_as<T> >::type type;
|
||||||
BOOST_STATIC_CONSTANT(int, value = BOOST_MPL_AUX_VALUE_WKND(type)::value);
|
BOOST_STATIC_CONSTANT(int, value = BOOST_MPL_AUX_VALUE_WKND(type)::value);
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ struct AUX778076_FOLD_IMPL_NAME;
|
|||||||
|
|
||||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||||
|
|
||||||
# if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
|
# if !BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600)
|
||||||
|
|
||||||
# define BOOST_PP_ITERATION_PARAMS_1 \
|
# define BOOST_PP_ITERATION_PARAMS_1 \
|
||||||
(3,(0, BOOST_MPL_LIMIT_UNROLLING, <boost/mpl/aux_/fold_impl_body.hpp>))
|
(3,(0, BOOST_MPL_LIMIT_UNROLLING, <boost/mpl/aux_/fold_impl_body.hpp>))
|
||||||
@@ -125,7 +125,7 @@ struct AUX778076_FOLD_IMPL_NAME<-1,Last,Last,State,ForwardOp>
|
|||||||
typedef Last iterator;
|
typedef Last iterator;
|
||||||
};
|
};
|
||||||
|
|
||||||
# else // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
|
# else // BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600)
|
||||||
|
|
||||||
// Borland have some serious problems with the unrolled version, so
|
// Borland have some serious problems with the unrolled version, so
|
||||||
// we always use a basic implementation
|
// we always use a basic implementation
|
||||||
@@ -164,7 +164,7 @@ struct AUX778076_FOLD_IMPL_NAME<N,Last,Last,State,ForwardOp >
|
|||||||
typedef state type;
|
typedef state type;
|
||||||
};
|
};
|
||||||
|
|
||||||
# endif // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
|
# endif // BOOST_WORKAROUND(BOOST_BORLANDC, < 0x600)
|
||||||
|
|
||||||
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
# include <boost/mpl/if.hpp>
|
# include <boost/mpl/if.hpp>
|
||||||
# include <boost/mpl/bool.hpp>
|
# include <boost/mpl/bool.hpp>
|
||||||
# include <boost/mpl/aux_/msvc_is_class.hpp>
|
# include <boost/mpl/aux_/msvc_is_class.hpp>
|
||||||
#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
#elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
# include <boost/mpl/if.hpp>
|
# include <boost/mpl/if.hpp>
|
||||||
# include <boost/mpl/bool.hpp>
|
# include <boost/mpl/bool.hpp>
|
||||||
# include <boost/mpl/aux_/yes_no.hpp>
|
# include <boost/mpl/aux_/yes_no.hpp>
|
||||||
@@ -62,7 +62,7 @@ struct has_rebind
|
|||||||
template< typename T > struct has_rebind_tag {};
|
template< typename T > struct has_rebind_tag {};
|
||||||
no_tag operator|(has_rebind_tag<int>, void const volatile*);
|
no_tag operator|(has_rebind_tag<int>, void const volatile*);
|
||||||
|
|
||||||
# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
# if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
template< typename T >
|
template< typename T >
|
||||||
struct has_rebind
|
struct has_rebind
|
||||||
{
|
{
|
||||||
@@ -71,7 +71,7 @@ struct has_rebind
|
|||||||
sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
|
sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
# else // __BORLANDC__
|
# else // BOOST_BORLANDC
|
||||||
template< typename T >
|
template< typename T >
|
||||||
struct has_rebind_impl
|
struct has_rebind_impl
|
||||||
{
|
{
|
||||||
@@ -90,7 +90,7 @@ struct has_rebind
|
|||||||
>::type
|
>::type
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
# endif // __BORLANDC__
|
# endif // BOOST_BORLANDC
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -56,14 +56,15 @@ struct AUX_WRAPPER_NAME
|
|||||||
// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
|
// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
|
||||||
// while some other don't like 'value + 1' (Borland), and some don't like
|
// while some other don't like 'value + 1' (Borland), and some don't like
|
||||||
// either
|
// either
|
||||||
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
|
||||||
|
|| __cplusplus >= 201103L
|
||||||
private:
|
private:
|
||||||
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
|
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
|
||||||
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
|
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
|
||||||
public:
|
public:
|
||||||
typedef AUX_WRAPPER_INST(next_value) next;
|
typedef AUX_WRAPPER_INST(next_value) next;
|
||||||
typedef AUX_WRAPPER_INST(prior_value) prior;
|
typedef AUX_WRAPPER_INST(prior_value) prior;
|
||||||
#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
|
#elif BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \
|
||||||
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|
|| BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
|
||||||
|| (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
|
|| (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
|
||||||
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
|
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ template< typename T > struct has_rebind_tag;
|
|||||||
typedef BOOST_PP_CAT(name,_rebind) rebind; \
|
typedef BOOST_PP_CAT(name,_rebind) rebind; \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
|
# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
|
||||||
template< BOOST_MPL_PP_PARAMS(i,typename T) > \
|
template< BOOST_MPL_PP_PARAMS(i,typename T) > \
|
||||||
::boost::mpl::aux::yes_tag operator|( \
|
::boost::mpl::aux::yes_tag operator|( \
|
||||||
@@ -134,7 +134,7 @@ template< BOOST_MPL_PP_PARAMS(i,typename T) > \
|
|||||||
# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
|
# define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# if !defined(__BORLANDC__)
|
# if !defined(BOOST_BORLANDC)
|
||||||
# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
|
# define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
|
||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
|
||||||
}; \
|
}; \
|
||||||
@@ -160,7 +160,7 @@ class BOOST_PP_CAT(name,_rebind) \
|
|||||||
typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
|
typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
|
||||||
}; \
|
}; \
|
||||||
/**/
|
/**/
|
||||||
# endif // __BORLANDC__
|
# endif // BOOST_BORLANDC
|
||||||
|
|
||||||
#endif // __EDG_VERSION__
|
#endif // __EDG_VERSION__
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
&& !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
||||||
# include <boost/mpl/assert.hpp>
|
# include <boost/mpl/assert.hpp>
|
||||||
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
|
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
|
||||||
BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<type>)) \
|
BOOST_MPL_ASSERT_NOT((boost::mpl::is_na<x>)) \
|
||||||
/**/
|
/**/
|
||||||
#else
|
#else
|
||||||
# include <boost/static_assert.hpp>
|
# include <boost/static_assert.hpp>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
|
#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
|
||||||
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
|
|| BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \
|
||||||
|| BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \
|
|| BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \
|
||||||
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
|
|| BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
namespace boost { namespace mpl { namespace aux {
|
namespace boost { namespace mpl { namespace aux {
|
||||||
template< int N > struct arity_tag
|
template< int N > struct arity_tag
|
||||||
{
|
{
|
||||||
typedef char (&type)[N + 1];
|
typedef char (&type)[(unsigned)N + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
template<
|
template<
|
||||||
|
|||||||
@@ -29,6 +29,10 @@
|
|||||||
BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
|
BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
# define BOOST_MPL_PP_ENUM_Z(z_ignored, n, param) \
|
||||||
|
BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
|
||||||
|
/**/
|
||||||
|
|
||||||
# define BOOST_MPL_PP_ENUM_0(p)
|
# define BOOST_MPL_PP_ENUM_0(p)
|
||||||
# define BOOST_MPL_PP_ENUM_1(p) p
|
# define BOOST_MPL_PP_ENUM_1(p) p
|
||||||
# define BOOST_MPL_PP_ENUM_2(p) p,p
|
# define BOOST_MPL_PP_ENUM_2(p) p,p
|
||||||
@@ -57,6 +61,14 @@
|
|||||||
) \
|
) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
# define BOOST_MPL_PP_ENUM_Z(z, n, param) \
|
||||||
|
BOOST_PP_REPEAT_ ## z( \
|
||||||
|
n \
|
||||||
|
, BOOST_MPL_PP_AUX_ENUM_FUNC \
|
||||||
|
, param \
|
||||||
|
) \
|
||||||
|
/**/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
|
#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
|
||||||
|
|||||||
@@ -29,6 +29,10 @@
|
|||||||
BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
|
BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
# define BOOST_MPL_PP_PARAMS_Z(z_ignored,n,p) \
|
||||||
|
BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
|
||||||
|
/**/
|
||||||
|
|
||||||
# define BOOST_MPL_PP_PARAMS_0(p)
|
# define BOOST_MPL_PP_PARAMS_0(p)
|
||||||
# define BOOST_MPL_PP_PARAMS_1(p) p##1
|
# define BOOST_MPL_PP_PARAMS_1(p) p##1
|
||||||
# define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
|
# define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
|
||||||
@@ -60,6 +64,14 @@
|
|||||||
) \
|
) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
# define BOOST_MPL_PP_PARAMS_Z(z, n, param) \
|
||||||
|
BOOST_PP_REPEAT_ ## z( \
|
||||||
|
n \
|
||||||
|
, BOOST_MPL_PP_AUX_PARAM_FUNC \
|
||||||
|
, param \
|
||||||
|
) \
|
||||||
|
/**/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
|
#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
namespace boost { namespace mpl { namespace aux {
|
namespace boost { namespace mpl { namespace aux {
|
||||||
|
|
||||||
template< typename T > static T const& ptr_to_ref(T*);
|
template< typename T > T const& ptr_to_ref(T*);
|
||||||
|
|
||||||
}}}
|
}}}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ template< typename Tag >
|
|||||||
struct size_impl
|
struct size_impl
|
||||||
{
|
{
|
||||||
template< typename Sequence > struct apply
|
template< typename Sequence > struct apply
|
||||||
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561))
|
#if !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561))
|
||||||
: distance<
|
: distance<
|
||||||
typename begin<Sequence>::type
|
typename begin<Sequence>::type
|
||||||
, typename end<Sequence>::type
|
, typename end<Sequence>::type
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x561)) \
|
||||||
|| BOOST_WORKAROUND(__GNUC__, < 3) \
|
|| BOOST_WORKAROUND(__GNUC__, < 3) \
|
||||||
|| BOOST_WORKAROUND(__MWERKS__, <= 0x3001)
|
|| BOOST_WORKAROUND(__MWERKS__, <= 0x3001)
|
||||||
# define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
|
# define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ namespace boost { namespace mpl { namespace aux {
|
|||||||
|
|
||||||
template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
|
template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
|
||||||
{
|
{
|
||||||
typedef char (&type)[N + 1];
|
typedef char (&type)[(unsigned)N + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
# define AUX778076_MAX_ARITY_OP(unused, state, i_) \
|
# define AUX778076_MAX_ARITY_OP(unused, state, i_) \
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include <boost/mpl/aux_/config/arrays.hpp>
|
#include <boost/mpl/aux_/config/arrays.hpp>
|
||||||
#include <boost/mpl/aux_/config/msvc.hpp>
|
#include <boost/mpl/aux_/config/msvc.hpp>
|
||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
|
||||||
namespace boost { namespace mpl { namespace aux {
|
namespace boost { namespace mpl { namespace aux {
|
||||||
@@ -36,7 +37,7 @@ template<> struct yes_no_tag<true>
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag
|
template< BOOST_MPL_AUX_NTTP_DECL(std::size_t, n) > struct weighted_tag
|
||||||
{
|
{
|
||||||
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
typedef char (&type)[n];
|
typedef char (&type)[n];
|
||||||
|
|||||||
@@ -19,27 +19,23 @@
|
|||||||
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitand)'
|
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitand)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'bitand' being an alternative token
|
// about 'bitand' being an alternative token
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitand)
|
#if defined(bitand)
|
||||||
# pragma push_macro("bitand")
|
# pragma push_macro("bitand")
|
||||||
# undef bitand
|
# undef bitand
|
||||||
# define bitand(x)
|
# define bitand(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AUX778076_OP_NAME bitand_
|
#define AUX778076_OP_NAME bitand_
|
||||||
#define AUX778076_OP_PREFIX bitand
|
#define AUX778076_OP_PREFIX bitand
|
||||||
#define AUX778076_OP_TOKEN &
|
#define AUX778076_OP_TOKEN &
|
||||||
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitand)
|
#if defined(bitand)
|
||||||
# pragma pop_macro("bitand")
|
# pragma pop_macro("bitand")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // BOOST_MPL_BITAND_HPP_INCLUDED
|
#endif // BOOST_MPL_BITAND_HPP_INCLUDED
|
||||||
|
|||||||
@@ -19,27 +19,23 @@
|
|||||||
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitor)'
|
// macros, see http://tinyurl.com/ycwdxco; 'defined(bitor)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'bitor' being an alternative token
|
// about 'bitor' being an alternative token
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitor)
|
#if defined(bitor)
|
||||||
# pragma push_macro("bitor")
|
# pragma push_macro("bitor")
|
||||||
# undef bitor
|
# undef bitor
|
||||||
# define bitor(x)
|
# define bitor(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#define AUX778076_OP_NAME bitor_
|
#define AUX778076_OP_NAME bitor_
|
||||||
#define AUX778076_OP_PREFIX bitor
|
#define AUX778076_OP_PREFIX bitor
|
||||||
#define AUX778076_OP_TOKEN |
|
#define AUX778076_OP_TOKEN |
|
||||||
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
#include <boost/mpl/aux_/arithmetic_op.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(bitor)
|
#if defined(bitor)
|
||||||
# pragma pop_macro("bitor")
|
# pragma pop_macro("bitor")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // BOOST_MPL_BITOR_HPP_INCLUDED
|
#endif // BOOST_MPL_BITOR_HPP_INCLUDED
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
#ifndef BOOST_MPL_GET_TAG_HPP_INCLUDED
|
||||||
|
#define BOOST_MPL_GET_TAG_HPP_INCLUDED
|
||||||
|
|
||||||
|
// Copyright Sergey Krivonos 2017
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/mpl for documentation.
|
||||||
|
|
||||||
|
// $Id$
|
||||||
|
// $Date$
|
||||||
|
// $Revision$
|
||||||
|
|
||||||
|
|
||||||
|
#define BOOST_MPL_GET_TAG_DEF(TAG) \
|
||||||
|
namespace boost { namespace mpl { \
|
||||||
|
template<typename T> \
|
||||||
|
struct get_##TAG { \
|
||||||
|
typedef typename T::TAG type; \
|
||||||
|
}; \
|
||||||
|
}}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
#include <boost/preprocessor/repetition/enum_params.hpp>
|
#include <boost/preprocessor/repetition/enum_params.hpp>
|
||||||
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
|
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
|
#if BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x590) )
|
||||||
# include <boost/type_traits/is_class.hpp>
|
# include <boost/type_traits/is_class.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ struct trait \
|
|||||||
}; \
|
}; \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
# elif BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
|
# elif BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x590) )
|
||||||
|
|
||||||
# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
|
# define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
|
||||||
template< typename T, bool IS_CLASS > \
|
template< typename T, bool IS_CLASS > \
|
||||||
@@ -334,7 +334,7 @@ struct trait \
|
|||||||
// correct name but different number of arguments.
|
// correct name but different number of arguments.
|
||||||
# define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \
|
# define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \
|
||||||
template< \
|
template< \
|
||||||
template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V \
|
template< BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), typename V) > class V \
|
||||||
> \
|
> \
|
||||||
struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \
|
struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \
|
||||||
}; \
|
}; \
|
||||||
@@ -503,7 +503,7 @@ struct trait \
|
|||||||
z, n, args \
|
z, n, args \
|
||||||
) \
|
) \
|
||||||
template< \
|
template< \
|
||||||
template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename U) > class U \
|
template< BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), typename U) > class U \
|
||||||
> \
|
> \
|
||||||
struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
|
struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
|
||||||
args, n \
|
args, n \
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ struct if_c<false,T1,T2>
|
|||||||
};
|
};
|
||||||
|
|
||||||
// agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars
|
// agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars
|
||||||
// (and possibly MWCW < 8.0); see http://article.gmane.org/gmane.comp.lib.boost.devel/108959
|
// (and possibly MWCW < 8.0); see https://lists.boost.org/Archives/boost/2004/09/71383.php
|
||||||
template<
|
template<
|
||||||
typename BOOST_MPL_AUX_NA_PARAM(T1)
|
typename BOOST_MPL_AUX_NA_PARAM(T1)
|
||||||
, typename BOOST_MPL_AUX_NA_PARAM(T2)
|
, typename BOOST_MPL_AUX_NA_PARAM(T2)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
||||||
&& !BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
|
&& !BOOST_WORKAROUND(BOOST_BORLANDC, <= 0x551)
|
||||||
BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
|
BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
|
||||||
// 'bool' constant doesn't have 'next'/'prior' members
|
// 'bool' constant doesn't have 'next'/'prior' members
|
||||||
template< bool C >
|
template< bool C >
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#include <boost/mpl/aux_/na_spec.hpp>
|
#include <boost/mpl/aux_/na_spec.hpp>
|
||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
# define BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL
|
# define BOOST_MPL_CFG_STRIPPED_DOWN_LOWER_BOUND_IMPL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
// resolves conflicts with 'boost::numeric_cast' function template.
|
// resolves conflicts with 'boost::numeric_cast' function template.
|
||||||
// use it in your own code _only_ if you care about compatibility with
|
// use it in your own code _only_ if you care about compatibility with
|
||||||
// these outdated compilers!
|
// these outdated compilers!
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) )
|
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x570) )
|
||||||
# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_
|
# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_
|
||||||
#else
|
#else
|
||||||
# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast
|
# define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast
|
||||||
|
|||||||
@@ -29,26 +29,22 @@
|
|||||||
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
|
// 'or' and 'and' macros, see http://tinyurl.com/3et69; 'defined(or)'
|
||||||
// has to be checked in a separate condition, otherwise GCC complains
|
// has to be checked in a separate condition, otherwise GCC complains
|
||||||
// about 'or' being an alternative token
|
// about 'or' being an alternative token
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(or)
|
#if defined(or)
|
||||||
# pragma push_macro("or")
|
# pragma push_macro("or")
|
||||||
# undef or
|
# undef or
|
||||||
# define or(x)
|
# define or(x)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
|
# define BOOST_MPL_PREPROCESSED_HEADER or.hpp
|
||||||
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
# include <boost/mpl/aux_/include_preprocessed.hpp>
|
||||||
|
|
||||||
#if defined(_MSC_VER) && !defined(__clang__)
|
#if defined(_MSC_EXTENSIONS)
|
||||||
#ifndef __GCCXML__
|
|
||||||
#if defined(or)
|
#if defined(or)
|
||||||
# pragma pop_macro("or")
|
# pragma pop_macro("or")
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,10 @@ struct print
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
|
# pragma clang diagnostic push
|
||||||
|
# pragma clang diagnostic ignored "-Wc++11-extensions"
|
||||||
const int m_x = 1 / (sizeof(T) - sizeof(T));
|
const int m_x = 1 / (sizeof(T) - sizeof(T));
|
||||||
|
# pragma clang diagnostic pop
|
||||||
#elif defined(BOOST_MSVC)
|
#elif defined(BOOST_MSVC)
|
||||||
enum { n = sizeof(T) + -1 };
|
enum { n = sizeof(T) + -1 };
|
||||||
#elif defined(__MWERKS__)
|
#elif defined(__MWERKS__)
|
||||||
|
|||||||
@@ -500,11 +500,11 @@ namespace boost { namespace mpl
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define M0(z, n, data) \
|
#define M0(z, n, data) \
|
||||||
template<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, int C), int J> \
|
template<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, int C), int J> \
|
||||||
struct string_iterator<mpl::string<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C)>, n, J> \
|
struct string_iterator<mpl::string<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, C)>, n, J> \
|
||||||
{ \
|
{ \
|
||||||
enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) }; \
|
enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == J + 1) }; \
|
||||||
typedef mpl::string<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C)> string; \
|
typedef mpl::string<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, C)> string; \
|
||||||
typedef std::bidirectional_iterator_tag category; \
|
typedef std::bidirectional_iterator_tag category; \
|
||||||
typedef \
|
typedef \
|
||||||
mpl::string_iterator<string, n + eomc_, eomc_ ? 0 : J + 1> \
|
mpl::string_iterator<string, n + eomc_, eomc_ ? 0 : J + 1> \
|
||||||
@@ -514,11 +514,11 @@ namespace boost { namespace mpl
|
|||||||
prior; \
|
prior; \
|
||||||
typedef mpl::char_<BOOST_MPL_MULTICHAR_AT(BOOST_PP_CAT(C, n), J)> type; \
|
typedef mpl::char_<BOOST_MPL_MULTICHAR_AT(BOOST_PP_CAT(C, n), J)> type; \
|
||||||
}; \
|
}; \
|
||||||
template<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, int C)> \
|
template<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, int C)> \
|
||||||
struct string_iterator<mpl::string<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C)>, n, 0> \
|
struct string_iterator<mpl::string<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, C)>, n, 0> \
|
||||||
{ \
|
{ \
|
||||||
enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) }; \
|
enum { eomc_ = (BOOST_MPL_MULTICHAR_LENGTH(BOOST_PP_CAT(C, n)) == 1) }; \
|
||||||
typedef mpl::string<BOOST_PP_ENUM_PARAMS(BOOST_MPL_STRING_MAX_PARAMS, C)> string; \
|
typedef mpl::string<BOOST_PP_ENUM_PARAMS_Z(z, BOOST_MPL_STRING_MAX_PARAMS, C)> string; \
|
||||||
typedef std::bidirectional_iterator_tag category; \
|
typedef std::bidirectional_iterator_tag category; \
|
||||||
typedef \
|
typedef \
|
||||||
mpl::string_iterator<string, n + eomc_, !eomc_> \
|
mpl::string_iterator<string, n + eomc_, !eomc_> \
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#include <boost/mpl/aux_/na_spec.hpp>
|
#include <boost/mpl/aux_/na_spec.hpp>
|
||||||
#include <boost/mpl/aux_/config/workaround.hpp>
|
#include <boost/mpl/aux_/config/workaround.hpp>
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
|
#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610))
|
||||||
# define BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL
|
# define BOOST_MPL_CFG_STRIPPED_DOWN_UPPER_BOUND_IMPL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
|
|||||||
struct at_impl< aux::vector_tag<n_> >
|
struct at_impl< aux::vector_tag<n_> >
|
||||||
{
|
{
|
||||||
template< typename Vector, typename N > struct apply
|
template< typename Vector, typename N > struct apply
|
||||||
#if !defined(__BORLANDC__)
|
#if !defined(BOOST_BORLANDC)
|
||||||
: v_at<
|
: v_at<
|
||||||
Vector
|
Vector
|
||||||
, BOOST_MPL_AUX_VALUE_WKND(N)::value
|
, BOOST_MPL_AUX_VALUE_WKND(N)::value
|
||||||
|
|||||||
+2
-1
@@ -10,5 +10,6 @@
|
|||||||
],
|
],
|
||||||
"maintainers": [
|
"maintainers": [
|
||||||
"Aleksey Gurtovoy <agurtovoy -at- meta-comm.com>"
|
"Aleksey Gurtovoy <agurtovoy -at- meta-comm.com>"
|
||||||
]
|
],
|
||||||
|
"cxxstd": "03"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ Pre-processing of MPL-containers can be accomplished using the script
|
|||||||
"boost_mpl_preprocess.py". In the simple case call it with a single
|
"boost_mpl_preprocess.py". In the simple case call it with a single
|
||||||
argument which is the path to the source-directory of Boost.
|
argument which is the path to the source-directory of Boost.
|
||||||
|
|
||||||
python boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
python3 boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
||||||
|
|
||||||
If the Boost source-directory is the one this script resides in, you
|
If the Boost source-directory is the one this script resides in, you
|
||||||
can just call it without any arguments.
|
can just call it without any arguments.
|
||||||
|
|
||||||
python boost_mpl_preprocess.py
|
python3 boost_mpl_preprocess.py
|
||||||
|
|
||||||
Either way, this will pre-process all four MPL-container types (vector,
|
Either way, this will pre-process all four MPL-container types (vector,
|
||||||
list, set, map) and makes them able to hold up to 100 elements. They can
|
list, set, map) and makes them able to hold up to 100 elements. They can
|
||||||
@@ -22,7 +22,7 @@ be different from the one of other MPL-container types and it can also
|
|||||||
differ between its 'numbered' and 'variadic' form.
|
differ between its 'numbered' and 'variadic' form.
|
||||||
To see all options, call the script like this:
|
To see all options, call the script like this:
|
||||||
|
|
||||||
python boost_mpl_preprocess.py --help
|
python3 boost_mpl_preprocess.py --help
|
||||||
|
|
||||||
|
|
||||||
Fixing pre-processing of MPL-containers
|
Fixing pre-processing of MPL-containers
|
||||||
@@ -44,12 +44,12 @@ can also fix them explicitly by calling "fix_boost_mpl_preprocess.py"
|
|||||||
directly.
|
directly.
|
||||||
If you just want to test if any fixing is needed call it like this:
|
If you just want to test if any fixing is needed call it like this:
|
||||||
|
|
||||||
python fix_boost_mpl_preprocess.py --check-only <path-to-boost-sourcedir>
|
python3 fix_boost_mpl_preprocess.py --check-only <path-to-boost-sourcedir>
|
||||||
|
|
||||||
This will tell you if any fixing is needed. In such a case call the script
|
This will tell you if any fixing is needed. In such a case call the script
|
||||||
"fix_boost_mpl_preprocess.py" like this:
|
"fix_boost_mpl_preprocess.py" like this:
|
||||||
|
|
||||||
python fix_boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
python3 fix_boost_mpl_preprocess.py <path-to-boost-sourcedir>
|
||||||
|
|
||||||
This will fix the header-comments of all the source-files needed during
|
This will fix the header-comments of all the source-files needed during
|
||||||
pre-processing. Calling "boost_mpl_preprocess.py" afterwards should then
|
pre-processing. Calling "boost_mpl_preprocess.py" afterwards should then
|
||||||
|
|||||||
@@ -29,10 +29,13 @@ def create_more_container_files(sourceDir, suffix, maxElements, containers, cont
|
|||||||
newFile = os.path.join( sourceDir, container, container + str(i+10) + suffix )
|
newFile = os.path.join( sourceDir, container, container + str(i+10) + suffix )
|
||||||
shutil.copyfile( os.path.join( sourceDir, container, container + "20" + suffix ), newFile )
|
shutil.copyfile( os.path.join( sourceDir, container, container + "20" + suffix ), newFile )
|
||||||
# Adjust copy of "template"-file accordingly.
|
# Adjust copy of "template"-file accordingly.
|
||||||
for line in fileinput.input( newFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( newFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(r'20', re.escape(str(i+10)), line.rstrip())
|
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
||||||
line = re.sub(r'11', re.escape(str(i + 1)), line.rstrip())
|
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
||||||
line = re.sub(r'10(?![0-9])', re.escape(str(i)), line.rstrip())
|
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
||||||
|
line = re.sub(r'%TWENTY%', re.escape(str(i+10)), line.rstrip())
|
||||||
|
line = re.sub(r'%ELEVEN%', re.escape(str(i + 1)), line.rstrip())
|
||||||
|
line = re.sub(r'%TEN%', re.escape(str(i)), line.rstrip())
|
||||||
print(line)
|
print(line)
|
||||||
for container in containers2:
|
for container in containers2:
|
||||||
for i in range(20, maxElements, 10):
|
for i in range(20, maxElements, 10):
|
||||||
@@ -40,10 +43,13 @@ def create_more_container_files(sourceDir, suffix, maxElements, containers, cont
|
|||||||
newFile = os.path.join( sourceDir, container, container + str(i+10) + "_c" + suffix )
|
newFile = os.path.join( sourceDir, container, container + str(i+10) + "_c" + suffix )
|
||||||
shutil.copyfile( os.path.join( sourceDir, container, container + "20_c" + suffix ), newFile )
|
shutil.copyfile( os.path.join( sourceDir, container, container + "20_c" + suffix ), newFile )
|
||||||
# Adjust copy of "template"-file accordingly.
|
# Adjust copy of "template"-file accordingly.
|
||||||
for line in fileinput.input( newFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( newFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(r'20', re.escape(str(i+10)), line.rstrip())
|
line = re.sub(r'20', '%TWENTY%', line.rstrip())
|
||||||
line = re.sub(r'11', re.escape(str(i + 1)), line.rstrip())
|
line = re.sub(r'11', '%ELEVEN%', line.rstrip())
|
||||||
line = re.sub(r'10(?![0-9])', re.escape(str(i)), line.rstrip())
|
line = re.sub(r'10(?![0-9])', '%TEN%', line.rstrip())
|
||||||
|
line = re.sub(r'%TWENTY%', re.escape(str(i+10)), line.rstrip())
|
||||||
|
line = re.sub(r'%ELEVEN%', re.escape(str(i + 1)), line.rstrip())
|
||||||
|
line = re.sub(r'%TEN%', re.escape(str(i)), line.rstrip())
|
||||||
print(line)
|
print(line)
|
||||||
|
|
||||||
|
|
||||||
@@ -67,7 +73,7 @@ def adjust_container_limits_for_variadic_sequences(headerDir, containers, maxEle
|
|||||||
headerFile = os.path.join( headerDir, "limits", container + ".hpp" )
|
headerFile = os.path.join( headerDir, "limits", container + ".hpp" )
|
||||||
regexMatch = r'(define\s+BOOST_MPL_LIMIT_' + container.upper() + r'_SIZE\s+)[0-9]+'
|
regexMatch = r'(define\s+BOOST_MPL_LIMIT_' + container.upper() + r'_SIZE\s+)[0-9]+'
|
||||||
regexReplace = r'\g<1>' + re.escape( str(maxElements) )
|
regexReplace = r'\g<1>' + re.escape( str(maxElements) )
|
||||||
for line in fileinput.input( headerFile, inplace=1, mode="rU" ):
|
for line in fileinput.input( headerFile, inplace=1, mode="r" ):
|
||||||
line = re.sub(regexMatch, regexReplace, line.rstrip())
|
line = re.sub(regexMatch, regexReplace, line.rstrip())
|
||||||
print(line)
|
print(line)
|
||||||
|
|
||||||
@@ -112,6 +118,11 @@ def to_existing_absolute_path(string):
|
|||||||
def main():
|
def main():
|
||||||
"""The main function."""
|
"""The main function."""
|
||||||
|
|
||||||
|
# Determine the currently running python executable.
|
||||||
|
python_executable = sys.executable
|
||||||
|
if python_executable == None or python_executable == "":
|
||||||
|
python_executable = python
|
||||||
|
|
||||||
# Find the current Boost source-directory in which this script is located.
|
# Find the current Boost source-directory in which this script is located.
|
||||||
sourceDir = current_boost_dir()
|
sourceDir = current_boost_dir()
|
||||||
if sourceDir == None:
|
if sourceDir == None:
|
||||||
@@ -144,19 +155,19 @@ def main():
|
|||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Arguments extracted from command-line:"
|
print("Arguments extracted from command-line:")
|
||||||
print " verbose = ", args.verbose
|
print(" verbose = ", args.verbose)
|
||||||
print " source directory = ", args.sourceDir
|
print(" source directory = ", args.sourceDir)
|
||||||
print " num elements = ", args.numElements
|
print(" num elements = ", args.numElements)
|
||||||
print " sequence type = ", args.seqType
|
print(" sequence type = ", args.seqType)
|
||||||
print " want: vector = ", args.want_vector
|
print(" want: vector = ", args.want_vector)
|
||||||
print " want: list = ", args.want_list
|
print(" want: list = ", args.want_list)
|
||||||
print " want: set = ", args.want_set
|
print(" want: set = ", args.want_set)
|
||||||
print " want: map = ", args.want_map
|
print(" want: map = ", args.want_map)
|
||||||
|
|
||||||
# Verify that we received any source-directory.
|
# Verify that we received any source-directory.
|
||||||
if args.sourceDir == None:
|
if args.sourceDir == None:
|
||||||
print "You should specify a valid path to the Boost source-directory."
|
print("You should specify a valid path to the Boost source-directory.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# The directories for header- and source files of Boost.MPL.
|
# The directories for header- and source files of Boost.MPL.
|
||||||
@@ -171,13 +182,13 @@ def main():
|
|||||||
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
||||||
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
||||||
cmdlineParser.print_usage()
|
cmdlineParser.print_usage()
|
||||||
print "error: Cannot find Boost.MPL header/source files in given Boost source-directory!"
|
print("error: Cannot find Boost.MPL header/source files in given Boost source-directory!")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Chosen header-directory: ", headerDir
|
print("Chosen header-directory: ", headerDir)
|
||||||
print "Chosen source-directory: ", sourceDir
|
print("Chosen source-directory: ", sourceDir)
|
||||||
|
|
||||||
# Create list of containers for which files shall be pre-processed.
|
# Create list of containers for which files shall be pre-processed.
|
||||||
containers = []
|
containers = []
|
||||||
@@ -190,23 +201,23 @@ def main():
|
|||||||
if args.want_map:
|
if args.want_map:
|
||||||
containers.append('map')
|
containers.append('map')
|
||||||
if containers == []:
|
if containers == []:
|
||||||
print "Nothing to do."
|
print("Nothing to do.")
|
||||||
print "(Why did you prevent generating pre-processed headers for all Boost.MPL container types?)"
|
print("(Why did you prevent generating pre-processed headers for all Boost.MPL container types?)")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Possibly fix the header-comments of input-files needed for pre-processing.
|
# Possibly fix the header-comments of input-files needed for pre-processing.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Checking if prior to pre-processing some input-files need fixing."
|
print("Checking if prior to pre-processing some input-files need fixing.")
|
||||||
needFixing = fixmpl.check_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
needFixing = fixmpl.check_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
||||||
if needFixing:
|
if needFixing:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Fixing of some input-files prior to pre-processing is needed."
|
print("Fixing of some input-files prior to pre-processing is needed.")
|
||||||
print "Will fix them now!"
|
print("Will fix them now!")
|
||||||
fixmpl.fix_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
fixmpl.fix_input_files(headerDir, sourceDir, containers, args.seqType, args.verbose)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Containers for which to pre-process headers: ", containers
|
print("Containers for which to pre-process headers: ", containers)
|
||||||
|
|
||||||
# Create (additional) input files for generating pre-processed headers of numbered sequence MPL containers.
|
# Create (additional) input files for generating pre-processed headers of numbered sequence MPL containers.
|
||||||
if args.seqType == "both" or args.seqType == "numbered":
|
if args.seqType == "both" or args.seqType == "numbered":
|
||||||
@@ -220,24 +231,24 @@ def main():
|
|||||||
if args.seqType == "both" or args.seqType == "numbered":
|
if args.seqType == "both" or args.seqType == "numbered":
|
||||||
if args.want_vector:
|
if args.want_vector:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered vectors."
|
print("Pre-process headers for Boost.MPL numbered vectors.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_vector.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_vector.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_list:
|
if args.want_list:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered lists."
|
print("Pre-process headers for Boost.MPL numbered lists.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_list.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_list.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_set:
|
if args.want_set:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered sets."
|
print("Pre-process headers for Boost.MPL numbered sets.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_set.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_set.py" ) + " all " + args.sourceDir )
|
||||||
if args.want_map:
|
if args.want_map:
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL numbered maps."
|
print("Pre-process headers for Boost.MPL numbered maps.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess_map.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess_map.py" ) + " all " + args.sourceDir )
|
||||||
if args.seqType == "both" or args.seqType == "variadic":
|
if args.seqType == "both" or args.seqType == "variadic":
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Pre-process headers for Boost.MPL variadic containers."
|
print("Pre-process headers for Boost.MPL variadic containers.")
|
||||||
os.system( "python " + os.path.join( sourceDir, "preprocess.py" ) + " all " + args.sourceDir )
|
os.system( python_executable + " " + os.path.join( sourceDir, "preprocess.py" ) + " all " + args.sourceDir )
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ def check_header_comment(filename):
|
|||||||
# Check input file.
|
# Check input file.
|
||||||
name = os.path.basename( filename )
|
name = os.path.basename( filename )
|
||||||
# Read content of input file.
|
# Read content of input file.
|
||||||
sourcefile = open( filename, "rU" )
|
sourcefile = open( filename, "r" )
|
||||||
content = sourcefile.read()
|
content = sourcefile.read()
|
||||||
sourcefile.close()
|
sourcefile.close()
|
||||||
# Search content for '$Id$'.
|
# Search content for '$Id$'.
|
||||||
@@ -66,26 +66,26 @@ def check_input_files(headerDir, sourceDir, containers=['vector', 'list', 'set',
|
|||||||
result1 = False
|
result1 = False
|
||||||
if seqType == "both" or seqType == "variadic":
|
if seqType == "both" or seqType == "variadic":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Check if input files for pre-processing Boost.MPL variadic containers need fixing."
|
print("Check if input files for pre-processing Boost.MPL variadic containers need fixing.")
|
||||||
result1 = check_input_files_for_variadic_seq(headerDir, sourceDir)
|
result1 = check_input_files_for_variadic_seq(headerDir, sourceDir)
|
||||||
if verbose:
|
if verbose:
|
||||||
if result1:
|
if result1:
|
||||||
print " At least one input file needs fixing!"
|
print(" At least one input file needs fixing!")
|
||||||
else:
|
else:
|
||||||
print " No input file needs fixing!"
|
print(" No input file needs fixing!")
|
||||||
# Check the input files for containers in their numbered form.
|
# Check the input files for containers in their numbered form.
|
||||||
result2 = False
|
result2 = False
|
||||||
result3 = False
|
result3 = False
|
||||||
if seqType == "both" or seqType == "numbered":
|
if seqType == "both" or seqType == "numbered":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Check input files for pre-processing Boost.MPL numbered containers."
|
print("Check input files for pre-processing Boost.MPL numbered containers.")
|
||||||
result2 = check_input_files_for_numbered_seq(headerDir, ".hpp", containers)
|
result2 = check_input_files_for_numbered_seq(headerDir, ".hpp", containers)
|
||||||
result3 = check_input_files_for_numbered_seq(sourceDir, ".cpp", containers)
|
result3 = check_input_files_for_numbered_seq(sourceDir, ".cpp", containers)
|
||||||
if verbose:
|
if verbose:
|
||||||
if result2 or result3:
|
if result2 or result3:
|
||||||
print " At least one input file needs fixing!"
|
print(" At least one input file needs fixing!")
|
||||||
else:
|
else:
|
||||||
print " No input file needs fixing!"
|
print(" No input file needs fixing!")
|
||||||
# Return result.
|
# Return result.
|
||||||
return result1 or result2 or result3
|
return result1 or result2 or result3
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ def fix_header_comment(filename, timestamp):
|
|||||||
"""Fixes the header-comment of the given file."""
|
"""Fixes the header-comment of the given file."""
|
||||||
# Fix input file.
|
# Fix input file.
|
||||||
name = os.path.basename( filename )
|
name = os.path.basename( filename )
|
||||||
for line in fileinput.input( filename, inplace=1, mode="rU" ):
|
for line in fileinput.input( filename, inplace=1, mode="r" ):
|
||||||
# If header-comment already contains anything for '$Id$', remove it.
|
# If header-comment already contains anything for '$Id$', remove it.
|
||||||
line = re.sub(r'\$Id:[^$]+\$', r'$Id$', line.rstrip())
|
line = re.sub(r'\$Id:[^$]+\$', r'$Id$', line.rstrip())
|
||||||
# Replace '$Id$' by a string containing the file's name (and a timestamp)!
|
# Replace '$Id$' by a string containing the file's name (and a timestamp)!
|
||||||
@@ -128,12 +128,12 @@ def fix_input_files(headerDir, sourceDir, containers=['vector', 'list', 'set', '
|
|||||||
# Fix the input files for containers in their variadic form.
|
# Fix the input files for containers in their variadic form.
|
||||||
if seqType == "both" or seqType == "variadic":
|
if seqType == "both" or seqType == "variadic":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Fix input files for pre-processing Boost.MPL variadic containers."
|
print("Fix input files for pre-processing Boost.MPL variadic containers.")
|
||||||
fix_input_files_for_variadic_seq(headerDir, sourceDir, timestamp)
|
fix_input_files_for_variadic_seq(headerDir, sourceDir, timestamp)
|
||||||
# Fix the input files for containers in their numbered form.
|
# Fix the input files for containers in their numbered form.
|
||||||
if seqType == "both" or seqType == "numbered":
|
if seqType == "both" or seqType == "numbered":
|
||||||
if verbose:
|
if verbose:
|
||||||
print "Fix input files for pre-processing Boost.MPL numbered containers."
|
print("Fix input files for pre-processing Boost.MPL numbered containers.")
|
||||||
fix_input_files_for_numbered_seq(headerDir, ".hpp", timestamp, containers)
|
fix_input_files_for_numbered_seq(headerDir, ".hpp", timestamp, containers)
|
||||||
fix_input_files_for_numbered_seq(sourceDir, ".cpp", timestamp, containers)
|
fix_input_files_for_numbered_seq(sourceDir, ".cpp", timestamp, containers)
|
||||||
|
|
||||||
@@ -164,10 +164,10 @@ def main():
|
|||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Arguments extracted from command-line:"
|
print("Arguments extracted from command-line:")
|
||||||
print " verbose = ", args.verbose
|
print(" verbose = ", args.verbose)
|
||||||
print " check-only = ", args.checkonly
|
print(" check-only = ", args.checkonly)
|
||||||
print " source directory = ", args.sourceDir
|
print(" source directory = ", args.sourceDir)
|
||||||
|
|
||||||
# The directories for header- and source files of Boost.MPL.
|
# The directories for header- and source files of Boost.MPL.
|
||||||
# NOTE: Assuming 'args.sourceDir' is the source-directory of the entire boost project.
|
# NOTE: Assuming 'args.sourceDir' is the source-directory of the entire boost project.
|
||||||
@@ -181,21 +181,21 @@ def main():
|
|||||||
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
sourceDir = os.path.join( args.sourceDir, "preprocessed" )
|
||||||
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
if not os.path.exists( headerDir ) or not os.path.exists( sourceDir ):
|
||||||
cmdlineParser.print_usage()
|
cmdlineParser.print_usage()
|
||||||
print "error: Cannot find Boost.MPL header/source files in given Boost source-directory!"
|
print("error: Cannot find Boost.MPL header/source files in given Boost source-directory!")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# Some verbose debug output.
|
# Some verbose debug output.
|
||||||
if args.verbose:
|
if args.verbose:
|
||||||
print "Chosen header-directory: ", headerDir
|
print("Chosen header-directory: ", headerDir)
|
||||||
print "Chosen source-directory: ", sourceDir
|
print("Chosen source-directory: ", sourceDir)
|
||||||
|
|
||||||
if args.checkonly:
|
if args.checkonly:
|
||||||
# Check input files for generating pre-processed headers.
|
# Check input files for generating pre-processed headers.
|
||||||
result = check_input_files(headerDir, sourceDir, verbose = args.verbose)
|
result = check_input_files(headerDir, sourceDir, verbose = args.verbose)
|
||||||
if result:
|
if result:
|
||||||
print "Fixing the input-files used for pre-processing of Boost.MPL headers IS required."
|
print("Fixing the input-files used for pre-processing of Boost.MPL headers IS required.")
|
||||||
else:
|
else:
|
||||||
print "Fixing the input-files used for pre-processing of Boost.MPL headers is NOT required."
|
print("Fixing the input-files used for pre-processing of Boost.MPL headers is NOT required.")
|
||||||
else:
|
else:
|
||||||
# Fix input files for generating pre-processed headers.
|
# Fix input files for generating pre-processed headers.
|
||||||
fix_input_files(headerDir, sourceDir, verbose = args.verbose)
|
fix_input_files(headerDir, sourceDir, verbose = args.verbose)
|
||||||
|
|||||||
+12
-13
@@ -12,6 +12,7 @@
|
|||||||
# $Revision$
|
# $Revision$
|
||||||
|
|
||||||
import fileinput
|
import fileinput
|
||||||
|
import functools
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
@@ -22,22 +23,21 @@ max_len = 79
|
|||||||
ident = 4
|
ident = 4
|
||||||
|
|
||||||
def nearest_ident_pos(text):
|
def nearest_ident_pos(text):
|
||||||
return (len(text)/ident) * ident
|
return int((len(text)/ident) * ident)
|
||||||
|
|
||||||
def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
||||||
if sep == ',' and string.find( text, '<' ) != -1:
|
if sep == ',' and str.find( text, '<' ) != -1:
|
||||||
sep = '%s ' % sep
|
sep = '%s ' % sep
|
||||||
|
|
||||||
words = string.split(
|
words = str.split(
|
||||||
string.join( string.split( text ), ' ' )
|
' '.join( str.split( text ) )
|
||||||
, sep
|
, sep
|
||||||
)
|
)
|
||||||
|
|
||||||
s = ' ' * limits[0]
|
s = ' ' * limits[0]
|
||||||
max_len = limits[1]
|
max_len = limits[1]
|
||||||
return '%s\n%s' \
|
return '%s\n%s' \
|
||||||
% (
|
% (
|
||||||
reduce(
|
functools.reduce(
|
||||||
lambda t,w,max_len=max_len,s=s,sep=sep:
|
lambda t,w,max_len=max_len,s=s,sep=sep:
|
||||||
if_else(t[1] + len(w) < max_len
|
if_else(t[1] + len(w) < max_len
|
||||||
, ('%s%s%s'% (t[0],t[2],w), t[1]+len(w)+len(t[2]), sep)
|
, ('%s%s%s'% (t[0],t[2],w), t[1]+len(w)+len(t[2]), sep)
|
||||||
@@ -52,7 +52,6 @@ def block_format(limits, text, first_sep=' ', sep=',', need_last_ident=1 ):
|
|||||||
def handle_args( match ):
|
def handle_args( match ):
|
||||||
if re.compile('^\s*(typedef|struct|static)\s+.*?$').match(match.group(0)):
|
if re.compile('^\s*(typedef|struct|static)\s+.*?$').match(match.group(0)):
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
return '%s'\
|
return '%s'\
|
||||||
% block_format(
|
% block_format(
|
||||||
(nearest_ident_pos(match.group(1)),max_len)
|
(nearest_ident_pos(match.group(1)),max_len)
|
||||||
@@ -86,7 +85,7 @@ def handle_inline_args(match):
|
|||||||
(nearest_ident_pos(match.group(1))+ident,max_len-len(match.group(9)))
|
(nearest_ident_pos(match.group(1))+ident,max_len-len(match.group(9)))
|
||||||
, match.group(4)
|
, match.group(4)
|
||||||
)
|
)
|
||||||
, string.replace(match.group(1),',',' ')
|
, str.replace(match.group(1),',',' ')
|
||||||
, match.group(9)
|
, match.group(9)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -98,18 +97,18 @@ def handle_simple_list(match):
|
|||||||
return if_else(single_arg,'%s<%s>','%s< %s >') %\
|
return if_else(single_arg,'%s<%s>','%s< %s >') %\
|
||||||
(
|
(
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(string.split(match.group(2)), '')
|
, ''.join(str.split(match.group(2)))
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle_static(match):
|
def handle_static(match):
|
||||||
if len(match.group(0)) < max_len:
|
if len(match.group(0)) < max_len:
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
(first_sep,sep) = if_else(string.find(match.group(0),'+') == -1, (' ',' '),(' ','+'))
|
(first_sep,sep) = if_else(str.find(match.group(0),'+') == -1, (' ',' '),(' ','+'))
|
||||||
return '%s%s\n%s%s' %\
|
return '%s%s\n%s%s' %\
|
||||||
(
|
(
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(string.split(match.group(2)), ' ')
|
, ' '.join(str.split(match.group(2)))
|
||||||
, block_format(
|
, block_format(
|
||||||
(nearest_ident_pos(match.group(1))+ident,max_len)
|
(nearest_ident_pos(match.group(1))+ident,max_len)
|
||||||
, match.group(4)
|
, match.group(4)
|
||||||
@@ -120,7 +119,7 @@ def handle_static(match):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def handle_typedefs(match):
|
def handle_typedefs(match):
|
||||||
if string.count(match.group(2), ';') == 1:
|
if str.count(match.group(2), ';') == 1:
|
||||||
return match.group(0)
|
return match.group(0)
|
||||||
|
|
||||||
join_sep = ';\n%s' % match.group(1)
|
join_sep = ';\n%s' % match.group(1)
|
||||||
@@ -128,7 +127,7 @@ def handle_typedefs(match):
|
|||||||
return '%s%s\n' \
|
return '%s%s\n' \
|
||||||
% (
|
% (
|
||||||
match.group(1)
|
match.group(1)
|
||||||
, string.join(map(string.strip, string.split(match.group(2), ';')), join_sep)
|
, join_sep.join(list(map(str.strip, str.split(match.group(2), ';'))))
|
||||||
)
|
)
|
||||||
|
|
||||||
def fix_angle_brackets( match ):
|
def fix_angle_brackets( match ):
|
||||||
|
|||||||
Executable → Regular
+1
-1
@@ -1 +1 @@
|
|||||||
gcc -E -C -P "-I%(boost_root)s" "-D BOOST_USER_CONFIG=<%(boost_root)s/libs/mpl/preprocessed/include/%(mode)s/user.hpp>" -D BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES %(file)s >"%(file_path)s"
|
gcc -E -C -P "-I%(boost_root)s" "-D BOOST_USER_CONFIG=\"%(boost_root)s/libs/mpl/preprocessed/include/%(mode)s/user.hpp\"" -D BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES %(file)s >"%(file_path)s"
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ def process_all( root, boost_root, dst_dir, mode ):
|
|||||||
|
|
||||||
def main( all_modes, src_dir, dst_dir ):
|
def main( all_modes, src_dir, dst_dir ):
|
||||||
if len( sys.argv ) < 2:
|
if len( sys.argv ) < 2:
|
||||||
print "\nUsage:\n\t %s <mode> <boost_root> [<source_file>]" % os.path.basename( sys.argv[0] )
|
print("\nUsage:\n\t %s <mode> <boost_root> [<source_file>]" % os.path.basename( sys.argv[0] ))
|
||||||
print "\nPurpose:\n\t updates preprocessed version(s) of the header(s) in \"%s\" directory" % dst_dir
|
print("\nPurpose:\n\t updates preprocessed version(s) of the header(s) in \"%s\" directory" % dst_dir)
|
||||||
print "\nExample:\n\t the following command will re-generate and update all 'apply.hpp' headers:"
|
print("\nExample:\n\t the following command will re-generate and update all 'apply.hpp' headers:")
|
||||||
print "\n\t\t %s all f:\\cvs\\boost apply.cpp" % os.path.basename( sys.argv[0] )
|
print("\n\t\t %s all f:\\cvs\\boost apply.cpp" % os.path.basename( sys.argv[0] ))
|
||||||
sys.exit( -1 )
|
sys.exit( -1 )
|
||||||
|
|
||||||
if sys.argv[1] == "all":
|
if sys.argv[1] == "all":
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Copyright 2018, 2019 Peter Dimov
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
include(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
|
||||||
|
|
||||||
|
if(HAVE_BOOST_TEST)
|
||||||
|
|
||||||
|
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::mpl Boost::bind)
|
||||||
|
|
||||||
|
endif()
|
||||||
+25
-3
@@ -1,3 +1,16 @@
|
|||||||
|
project
|
||||||
|
: requirements
|
||||||
|
<library>/boost/mpl//boost_mpl
|
||||||
|
<warnings>extra
|
||||||
|
<toolset>clang:<cxxflags>-Wno-variadic-macros
|
||||||
|
<toolset>gcc:<cxxflags>-Wshadow
|
||||||
|
<toolset>gcc:<cxxflags>-Wno-variadic-macros
|
||||||
|
<toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
|
||||||
|
;
|
||||||
|
|
||||||
|
import common ;
|
||||||
|
import os ;
|
||||||
|
import testing ;
|
||||||
|
|
||||||
compile aux_/increased_arity.cpp ;
|
compile aux_/increased_arity.cpp ;
|
||||||
compile aux_/largest_int.cpp ;
|
compile aux_/largest_int.cpp ;
|
||||||
@@ -13,6 +26,7 @@ compile apply_wrap.cpp ;
|
|||||||
compile arithmetic.cpp ;
|
compile arithmetic.cpp ;
|
||||||
compile as_sequence.cpp ;
|
compile as_sequence.cpp ;
|
||||||
compile assert.cpp ;
|
compile assert.cpp ;
|
||||||
|
# link assert_vc8_p1.cpp assert_vc8_p2.cpp
|
||||||
compile at.cpp ;
|
compile at.cpp ;
|
||||||
compile back.cpp ;
|
compile back.cpp ;
|
||||||
compile bind.cpp ;
|
compile bind.cpp ;
|
||||||
@@ -35,8 +49,11 @@ compile filter_view.cpp ;
|
|||||||
compile find.cpp ;
|
compile find.cpp ;
|
||||||
compile find_if.cpp ;
|
compile find_if.cpp ;
|
||||||
compile fold.cpp ;
|
compile fold.cpp ;
|
||||||
run for_each.cpp ;
|
run for_each.cpp
|
||||||
|
: : : <cxxstd>98:<build>no <cxxstd>03:<build>no
|
||||||
|
<library>/boost/bind//boost_bind ;
|
||||||
compile front.cpp ;
|
compile front.cpp ;
|
||||||
|
compile get_tag_def.cpp ;
|
||||||
compile has_xxx.cpp ;
|
compile has_xxx.cpp ;
|
||||||
compile identity.cpp ;
|
compile identity.cpp ;
|
||||||
compile if.cpp ;
|
compile if.cpp ;
|
||||||
@@ -45,8 +62,10 @@ compile inherit.cpp ;
|
|||||||
compile insert.cpp ;
|
compile insert.cpp ;
|
||||||
compile insert_range.cpp ;
|
compile insert_range.cpp ;
|
||||||
run int.cpp ;
|
run int.cpp ;
|
||||||
run char.cpp ;
|
run char.cpp : : : : char ;
|
||||||
run integral_c.cpp : : : <toolset>vacpp:<cxxflags>-qchars=signed ;
|
run char.cpp : : : <toolset>gcc:<cxxflags>"-funsigned-char -Wnarrowing -Werror" : char_unsigned ;
|
||||||
|
run integral_c.cpp : : : <toolset>vacpp:<cxxflags>-qchars=signed : integral_c ;
|
||||||
|
run integral_c.cpp : : : <toolset>gcc:<cxxflags>"-funsigned-char -Wnarrowing -Werror" : integral_c_unsigned ;
|
||||||
compile is_placeholder.cpp ;
|
compile is_placeholder.cpp ;
|
||||||
compile is_sequence.cpp ;
|
compile is_sequence.cpp ;
|
||||||
compile iterator_tags.cpp ;
|
compile iterator_tags.cpp ;
|
||||||
@@ -94,3 +113,6 @@ compile vector.cpp ;
|
|||||||
compile vector_c.cpp ;
|
compile vector_c.cpp ;
|
||||||
compile zip_view.cpp ;
|
compile zip_view.cpp ;
|
||||||
run string.cpp ;
|
run string.cpp ;
|
||||||
|
|
||||||
|
run issue_69.cpp ;
|
||||||
|
run issue_84.cpp ;
|
||||||
|
|||||||
+11
-11
@@ -24,14 +24,14 @@
|
|||||||
#include <boost/preprocessor/cat.hpp>
|
#include <boost/preprocessor/cat.hpp>
|
||||||
|
|
||||||
#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
|
#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
|
||||||
# define APPLY_0_FUNC_DEF(i) \
|
# define APPLY_0_FUNC_DEF(z_ignored,i) \
|
||||||
struct f0 \
|
struct f0 \
|
||||||
{ \
|
{ \
|
||||||
template< typename T = int > struct apply { typedef char type; }; \
|
template< typename T = int > struct apply { typedef char type; }; \
|
||||||
}; \
|
}; \
|
||||||
/**/
|
/**/
|
||||||
#else
|
#else
|
||||||
# define APPLY_0_FUNC_DEF(i) \
|
# define APPLY_0_FUNC_DEF(z_ignored,i) \
|
||||||
struct f0 \
|
struct f0 \
|
||||||
{ \
|
{ \
|
||||||
template< typename T > struct apply { typedef char type; }; \
|
template< typename T > struct apply { typedef char type; }; \
|
||||||
@@ -39,16 +39,16 @@
|
|||||||
/**/
|
/**/
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define APPLY_N_FUNC_DEF(i) \
|
#define APPLY_N_FUNC_DEF(z,i) \
|
||||||
struct first##i \
|
struct first##i \
|
||||||
{ \
|
{ \
|
||||||
template< BOOST_MPL_PP_PARAMS(i, typename U) > \
|
template< BOOST_MPL_PP_PARAMS_Z(z, i, typename U) > \
|
||||||
struct apply { typedef U1 type; }; \
|
struct apply { typedef U1 type; }; \
|
||||||
}; \
|
}; \
|
||||||
\
|
\
|
||||||
struct last##i \
|
struct last##i \
|
||||||
{ \
|
{ \
|
||||||
template< BOOST_MPL_PP_PARAMS(i, typename U) > \
|
template< BOOST_MPL_PP_PARAMS_Z(z, i, typename U) > \
|
||||||
struct apply { typedef BOOST_PP_CAT(U,i) type; }; \
|
struct apply { typedef BOOST_PP_CAT(U,i) type; }; \
|
||||||
}; \
|
}; \
|
||||||
/**/
|
/**/
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
i \
|
i \
|
||||||
, APPLY_N_FUNC_DEF \
|
, APPLY_N_FUNC_DEF \
|
||||||
, APPLY_0_FUNC_DEF \
|
, APPLY_0_FUNC_DEF \
|
||||||
)(i) \
|
)(z,i) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
namespace { namespace test {
|
namespace { namespace test {
|
||||||
@@ -73,22 +73,22 @@ struct g0 { struct apply { typedef char type; }; };
|
|||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#define APPLY_0_TEST(i, apply_) \
|
#define APPLY_0_TEST(z_ignored, i, apply_) \
|
||||||
typedef apply_<test::f##i>::type t; \
|
typedef apply_<test::f##i>::type t; \
|
||||||
{ MPL_ASSERT(( boost::is_same<t, char> )); } \
|
{ MPL_ASSERT(( boost::is_same<t, char> )); } \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
#define APPLY_N_TEST(i, apply_) \
|
#define APPLY_N_TEST(z, i, apply_) \
|
||||||
typedef apply_< \
|
typedef apply_< \
|
||||||
test::first##i \
|
test::first##i \
|
||||||
, char \
|
, char \
|
||||||
BOOST_PP_COMMA_IF(BOOST_PP_DEC(i)) \
|
BOOST_PP_COMMA_IF(BOOST_PP_DEC(i)) \
|
||||||
BOOST_MPL_PP_ENUM(BOOST_PP_DEC(i), int) \
|
BOOST_MPL_PP_ENUM_Z(z, BOOST_PP_DEC(i), int) \
|
||||||
>::type t1##i; \
|
>::type t1##i; \
|
||||||
\
|
\
|
||||||
typedef apply_< \
|
typedef apply_< \
|
||||||
test::last##i \
|
test::last##i \
|
||||||
, BOOST_MPL_PP_ENUM(BOOST_PP_DEC(i), int) \
|
, BOOST_MPL_PP_ENUM_Z(z, BOOST_PP_DEC(i), int) \
|
||||||
BOOST_PP_COMMA_IF(BOOST_PP_DEC(i)) char \
|
BOOST_PP_COMMA_IF(BOOST_PP_DEC(i)) char \
|
||||||
>::type t2##i; \
|
>::type t2##i; \
|
||||||
{ MPL_ASSERT(( boost::is_same<t1##i, char> )); } \
|
{ MPL_ASSERT(( boost::is_same<t1##i, char> )); } \
|
||||||
@@ -100,7 +100,7 @@ struct g0 { struct apply { typedef char type; }; };
|
|||||||
i \
|
i \
|
||||||
, APPLY_N_TEST \
|
, APPLY_N_TEST \
|
||||||
, APPLY_0_TEST \
|
, APPLY_0_TEST \
|
||||||
)(i, BOOST_PP_CAT(apply_wrap,i)) \
|
)(z, i, BOOST_PP_CAT(apply_wrap,i)) \
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
// Copyright Robin Linden 2018
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/mpl for documentation.
|
||||||
|
|
||||||
|
// $Id$
|
||||||
|
// $Date$
|
||||||
|
// $Revision$
|
||||||
|
|
||||||
|
// Part of a test to demonstrate a linking error with
|
||||||
|
// BOOST_MPL_ASSERT_MSG inside of functions under VC++8.
|
||||||
|
|
||||||
|
#include <boost/mpl/assert.hpp>
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
bool func()
|
||||||
|
{
|
||||||
|
BOOST_MPL_ASSERT_MSG(
|
||||||
|
true,
|
||||||
|
ALWAYS_TRUE,
|
||||||
|
(T));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
// Copyright Robin Linden 2018
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/mpl for documentation.
|
||||||
|
|
||||||
|
// $Id$
|
||||||
|
// $Date$
|
||||||
|
// $Revision$
|
||||||
|
|
||||||
|
// Part of a test to demonstrate a linking error with
|
||||||
|
// BOOST_MPL_ASSERT_MSG inside of functions under VC++8.
|
||||||
|
|
||||||
|
#include "assert_vc8.hpp"
|
||||||
|
|
||||||
|
static bool a = func<int>();
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
// Copyright Robin Linden 2018
|
||||||
|
//
|
||||||
|
// 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)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/libs/mpl for documentation.
|
||||||
|
|
||||||
|
// $Id$
|
||||||
|
// $Date$
|
||||||
|
// $Revision$
|
||||||
|
|
||||||
|
// Part of a test to demonstrate a linking error with
|
||||||
|
// BOOST_MPL_ASSERT_MSG inside of functions under VC++8.
|
||||||
|
|
||||||
|
#include "assert_vc8.hpp"
|
||||||
|
|
||||||
|
static bool a = func<int>();
|
||||||
@@ -25,11 +25,11 @@
|
|||||||
#include <boost/preprocessor/enum_params.hpp>
|
#include <boost/preprocessor/enum_params.hpp>
|
||||||
#include <boost/preprocessor/facilities/intercept.hpp>
|
#include <boost/preprocessor/facilities/intercept.hpp>
|
||||||
|
|
||||||
#define TEST_N_ARY(unused1, N, unused2) \
|
#define TEST_N_ARY(z, N, unused2) \
|
||||||
static_assert_< \
|
static_assert_< \
|
||||||
apply< \
|
apply< \
|
||||||
and_<BOOST_PP_ENUM_PARAMS(N, _ BOOST_PP_INTERCEPT)>, \
|
and_<BOOST_PP_ENUM_PARAMS_Z(z, N, _ BOOST_PP_INTERCEPT)>, \
|
||||||
BOOST_PP_ENUM_PARAMS(N, true_ BOOST_PP_INTERCEPT) \
|
BOOST_PP_ENUM_PARAMS_Z(z, N, true_ BOOST_PP_INTERCEPT) \
|
||||||
> \
|
> \
|
||||||
>(); \
|
>(); \
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
@@ -13,12 +13,17 @@
|
|||||||
|
|
||||||
#include <boost/mpl/char.hpp>
|
#include <boost/mpl/char.hpp>
|
||||||
#include <boost/preprocessor/repeat.hpp>
|
#include <boost/preprocessor/repeat.hpp>
|
||||||
|
#include <climits>
|
||||||
|
|
||||||
#include "integral_wrapper_test.hpp"
|
#include "integral_wrapper_test.hpp"
|
||||||
|
|
||||||
|
|
||||||
MPL_TEST_CASE()
|
MPL_TEST_CASE()
|
||||||
{
|
{
|
||||||
|
#if CHAR_MAX > 0
|
||||||
|
# define WRAPPER(T, i) char_<static_cast<char>(i)>
|
||||||
|
#else
|
||||||
# define WRAPPER(T, i) char_<i>
|
# define WRAPPER(T, i) char_<i>
|
||||||
|
#endif
|
||||||
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
BOOST_PP_REPEAT(10, INTEGRAL_WRAPPER_TEST, char)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# Copyright 2018 Peter Dimov
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.5...3.16)
|
||||||
|
|
||||||
|
project(cmake_install_test LANGUAGES CXX)
|
||||||
|
|
||||||
|
find_package(boost_mpl REQUIRED)
|
||||||
|
|
||||||
|
add_executable(main main.cpp)
|
||||||
|
target_link_libraries(main Boost::mpl)
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
add_test(NAME main COMMAND main)
|
||||||
|
|
||||||
|
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
// Copyright 2024 Peter Dimov
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
#include <boost/mpl/assert.hpp>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
BOOST_MPL_ASSERT_RELATION( 1, <, 5 );
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# Copyright 2018 Peter Dimov
|
||||||
|
# Distributed under the Boost Software License, Version 1.0.
|
||||||
|
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.5...3.16)
|
||||||
|
|
||||||
|
project(cmake_subdir_test LANGUAGES CXX)
|
||||||
|
|
||||||
|
add_subdirectory(../.. boostorg/mpl)
|
||||||
|
|
||||||
|
add_subdirectory(../../../assert boostorg/assert)
|
||||||
|
add_subdirectory(../../../config boostorg/config)
|
||||||
|
add_subdirectory(../../../core boostorg/core)
|
||||||
|
add_subdirectory(../../../io boostorg/io)
|
||||||
|
add_subdirectory(../../../predef boostorg/predef)
|
||||||
|
add_subdirectory(../../../preprocessor boostorg/preprocessor)
|
||||||
|
add_subdirectory(../../../static_assert boostorg/static_assert)
|
||||||
|
add_subdirectory(../../../throw_exception boostorg/throw_exception)
|
||||||
|
add_subdirectory(../../../type_traits boostorg/type_traits)
|
||||||
|
add_subdirectory(../../../utility boostorg/utility)
|
||||||
|
|
||||||
|
add_executable(main main.cpp)
|
||||||
|
target_link_libraries(main Boost::mpl)
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
add_test(NAME main COMMAND main)
|
||||||
|
|
||||||
|
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user