mirror of
https://github.com/boostorg/utility.git
synced 2025-12-14 17:38:30 +01:00
Compare commits
10 Commits
ostream_wr
...
feature/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
882c9c86c4 | ||
|
|
c81d8e3990 | ||
|
|
75276a055d | ||
|
|
309e6a1b31 | ||
|
|
9eeb7f85c5 | ||
|
|
62c34f51f6 | ||
|
|
6a1917ceec | ||
|
|
47c9f69ffe | ||
|
|
7b74d2d494 | ||
|
|
57da5f0c18 |
192
.travis.yml
192
.travis.yml
@@ -1,4 +1,5 @@
|
|||||||
# Copyright 2016, 2017 Peter Dimov
|
# Copyright 2016, 2017 Peter Dimov
|
||||||
|
# Copyright 2019 Andrey Semashev
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
# 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)
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@@ -24,12 +25,32 @@ matrix:
|
|||||||
- env: BOGUS_JOB=true
|
- env: BOGUS_JOB=true
|
||||||
|
|
||||||
include:
|
include:
|
||||||
|
# gcc, Linux
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++
|
dist: trusty
|
||||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
|
compiler: gcc-4.4
|
||||||
|
env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- g++-4.4
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++-4.7
|
dist: trusty
|
||||||
|
compiler: gcc-4.6
|
||||||
|
env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- g++-4.6
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
dist: trusty
|
||||||
|
compiler: gcc-4.7
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
|
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -39,7 +60,8 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++-4.8
|
dist: xenial
|
||||||
|
compiler: gcc-4.8
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
|
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -47,8 +69,10 @@ matrix:
|
|||||||
- g++-4.8
|
- g++-4.8
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++-4.9
|
dist: xenial
|
||||||
|
compiler: gcc-4.9
|
||||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
|
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -58,7 +82,8 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++-5
|
dist: xenial
|
||||||
|
compiler: gcc-5
|
||||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
|
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -68,7 +93,8 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: g++-6
|
dist: xenial
|
||||||
|
compiler: gcc-6
|
||||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
|
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -78,8 +104,8 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: trusty
|
dist: xenial
|
||||||
compiler: g++-7
|
compiler: gcc-7
|
||||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
|
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -89,9 +115,9 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
dist: trusty
|
dist: xenial
|
||||||
compiler: g++-8
|
compiler: gcc-8
|
||||||
env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17
|
env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17,2a
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@@ -100,22 +126,34 @@ matrix:
|
|||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++
|
dist: bionic
|
||||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
|
compiler: gcc-9
|
||||||
|
env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- g++-9
|
||||||
|
sources:
|
||||||
|
- sourceline: "ppa:ubuntu-toolchain-r/test"
|
||||||
|
|
||||||
|
# clang, Linux
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-3.5
|
dist: trusty
|
||||||
|
compiler: clang-3.5
|
||||||
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11
|
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.5
|
- clang-3.5
|
||||||
|
- libstdc++-4.9-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.5
|
- sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.5 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-3.6
|
dist: trusty
|
||||||
|
compiler: clang-3.6
|
||||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -124,10 +162,12 @@ matrix:
|
|||||||
- libstdc++-5-dev
|
- libstdc++-5-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.6
|
- sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.6 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-3.7
|
dist: trusty
|
||||||
|
compiler: clang-3.7
|
||||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
@@ -136,83 +176,149 @@ matrix:
|
|||||||
- libstdc++-5-dev
|
- libstdc++-5-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.7
|
- sourceline: "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.7 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-3.8
|
dist: xenial
|
||||||
|
compiler: clang-3.8
|
||||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.8
|
- clang-3.8
|
||||||
- libstdc++-5-dev
|
- libstdc++-6-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.8
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.8 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-3.9
|
dist: xenial
|
||||||
|
compiler: clang-3.9
|
||||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-3.9
|
- clang-3.9
|
||||||
- libstdc++-5-dev
|
- libstdc++-6-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.9
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-4.0
|
dist: xenial
|
||||||
|
compiler: clang-4
|
||||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-4.0
|
- clang-4.0
|
||||||
- libstdc++-5-dev
|
- libstdc++-6-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-trusty-4.0
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-4.0 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-5.0
|
dist: xenial
|
||||||
|
compiler: clang-5
|
||||||
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
|
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-5.0
|
- clang-5.0
|
||||||
- libstdc++-5-dev
|
- libstdc++-7-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-trusty-5.0
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-6.0
|
dist: xenial
|
||||||
env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17
|
compiler: clang-6
|
||||||
|
env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17,2a
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-6.0
|
- clang-6.0
|
||||||
- libstdc++-5-dev
|
- libstdc++-8-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-trusty-6.0
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
- os: linux
|
- os: linux
|
||||||
compiler: clang++-7
|
dist: xenial
|
||||||
env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17
|
compiler: clang-7
|
||||||
|
env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17,2a
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- clang-7
|
- clang-7
|
||||||
- libstdc++-5-dev
|
- libstdc++-8-dev
|
||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-trusty-7
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-7 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang-8
|
||||||
|
env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- clang-8
|
||||||
|
- libstdc++-8-dev
|
||||||
|
sources:
|
||||||
|
- ubuntu-toolchain-r-test
|
||||||
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang-9
|
||||||
|
env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- clang-9
|
||||||
|
- libstdc++-9-dev
|
||||||
|
sources:
|
||||||
|
- sourceline: "ppa:ubuntu-toolchain-r/test"
|
||||||
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
dist: xenial
|
||||||
|
compiler: clang-libc++
|
||||||
|
env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a CXXFLAGS="-stdlib=libc++" LINKFLAGS="-stdlib=libc++"
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- clang-9
|
||||||
|
- libc++-9-dev
|
||||||
|
- libc++abi-9-dev
|
||||||
|
sources:
|
||||||
|
- sourceline: "ppa:ubuntu-toolchain-r/test"
|
||||||
|
- sourceline: "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main"
|
||||||
|
key_url: "https://apt.llvm.org/llvm-snapshot.gpg.key"
|
||||||
|
|
||||||
|
# clang, OS X
|
||||||
|
# OS X builds are slow on Travis CI
|
||||||
|
# - os: osx
|
||||||
|
# env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||||
|
# osx_image: xcode9.4
|
||||||
|
#
|
||||||
|
# - os: osx
|
||||||
|
# env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||||
|
# osx_image: xcode10.3
|
||||||
|
|
||||||
- os: osx
|
- os: osx
|
||||||
compiler: clang++
|
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,17
|
||||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
osx_image: xcode11.2
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- GIT_FETCH_JOBS=8
|
- GIT_FETCH_JOBS=8
|
||||||
@@ -243,7 +349,7 @@ script:
|
|||||||
- |-
|
- |-
|
||||||
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
|
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
|
||||||
- BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null`
|
- BUILD_JOBS=`(nproc || sysctl -n hw.ncpu) 2> /dev/null`
|
||||||
- ./b2 -j $BUILD_JOBS libs/utility/test toolset=$TOOLSET cxxstd=$CXXSTD
|
- ./b2 -j $BUILD_JOBS libs/utility/test toolset=$TOOLSET cxxstd=$CXXSTD ${CXXFLAGS:+cxxflags="$CXXFLAGS"} ${LINKFLAGS:+linkflags="$LINKFLAGS"}
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
|
|||||||
41
appveyor.yml
41
appveyor.yml
@@ -1,4 +1,5 @@
|
|||||||
# Copyright 2016-2019 Peter Dimov
|
# Copyright 2016-2019 Peter Dimov
|
||||||
|
# Copyright 2019 Andrey Semashev
|
||||||
# Distributed under the Boost Software License, Version 1.0.
|
# 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)
|
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
@@ -14,15 +15,43 @@ branches:
|
|||||||
|
|
||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0,msvc-12.0
|
||||||
TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
- TOOLSET: msvc-14.0
|
||||||
TOOLSET: msvc-12.0,msvc-14.0
|
|
||||||
ADDRMD: 32,64
|
ADDRMD: 32,64
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
TOOLSET: msvc-14.1
|
- TOOLSET: msvc-14.1
|
||||||
|
CXXSTD: 14,17
|
||||||
|
ADDRMD: 32,64
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
- TOOLSET: msvc-14.2
|
||||||
ADDRMD: 32,64
|
ADDRMD: 32,64
|
||||||
CXXSTD: 14,17
|
CXXSTD: 14,17
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||||
|
- TOOLSET: clang-win
|
||||||
|
ADDRMD: 32,64
|
||||||
|
CXXSTD: 14,17
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
|
- TOOLSET: gcc
|
||||||
|
CXXSTD: 03,11,14,1z
|
||||||
|
ADDPATH: C:\cygwin\bin;
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
|
- TOOLSET: gcc
|
||||||
|
CXXSTD: 03,11,14,1z
|
||||||
|
ADDPATH: C:\cygwin64\bin;
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
|
- TOOLSET: gcc
|
||||||
|
CXXSTD: 03,11,14,1z
|
||||||
|
ADDPATH: C:\mingw\bin;
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
|
- TOOLSET: gcc
|
||||||
|
CXXSTD: 03,11,14,1z
|
||||||
|
ADDPATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
|
- TOOLSET: gcc
|
||||||
|
CXXSTD: 03,11,14,1z
|
||||||
|
ADDPATH: C:\mingw-w64\x86_64-7.3.0-posix-seh-rt_v5-rev0\mingw64\bin;
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- set GIT_FETCH_JOBS=8
|
- set GIT_FETCH_JOBS=8
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Distributed under the Boost Software License, Version 1.0.
|
|||||||
[section Overview]
|
[section Overview]
|
||||||
|
|
||||||
The header <boost/utility/ostream_string.hpp> provides the function template
|
The header <boost/utility/ostream_string.hpp> provides the function template
|
||||||
boost::ostream_string for formatted output that satisfies the requirements of
|
`boost::ostream_string` for formatted output that satisfies the requirements of
|
||||||
\[ostream.formatted.reqmts\].
|
\[ostream.formatted.reqmts\].
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
@@ -50,13 +50,29 @@ ostream_string(std::basic_ostream<charT, traits>& os,
|
|||||||
} /* boost */
|
} /* boost */
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[heading Free functions]
|
||||||
|
|
||||||
[variablelist
|
[variablelist
|
||||||
|
[[`template<class charT, class traits> std::basic_ostream<charT, traits>&
|
||||||
|
ostream_string(std::basic_ostream<charT, traits>& os, const charT* data,
|
||||||
|
std::size_t size);`]
|
||||||
|
[[variablelist
|
||||||
[[Effects]
|
[[Effects]
|
||||||
[Behaves like a formatted inserter (as described in
|
[Behaves like a formatted inserter (as described in
|
||||||
\[ostream.formatted.reqmts\]) of `os`. Creates a character sequence `seq` of
|
\[ostream.formatted.reqmts\]) of `os`. Creates a character sequence `seq` of
|
||||||
`size` characters starting at `data`, each widened using `os.widen()`
|
`size` characters starting at `data`, each widened using `os.widen()`
|
||||||
(\[basic.ios.members\]). Determines padding for `seq` as described in
|
(\[basic.ios.members\]). Determines padding for `seq` as described in
|
||||||
\[ostream.formatted.reqmts\]. Inserts `seq` into `os`. Calls `width(0)`.]]
|
\[ostream.formatted.reqmts\]. Inserts `seq` into `os`. Calls `width(0)`.]]
|
||||||
[[Returns] [`os`.]]]
|
[[Returns][`os`.]]]]]]
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section History]
|
||||||
|
|
||||||
|
[heading boost 1.71]
|
||||||
|
|
||||||
|
* Glen Fernandes updated the implementation of the `basic_string_ref` and
|
||||||
|
`basic_string_view` stream insertion operators to write directly to the
|
||||||
|
`basic_streambuf` and refactored that functionality into this common utility.
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|||||||
@@ -156,6 +156,11 @@ String-like operations:
|
|||||||
[section History]
|
[section History]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
|
[heading boost 1.71]
|
||||||
|
* Glen Fernandes updated the implementation of the stream insertion operator to
|
||||||
|
write directly to the `basic_streambuf` and refactored that functionality into
|
||||||
|
a common utility.
|
||||||
|
|
||||||
[heading boost 1.53]
|
[heading boost 1.53]
|
||||||
* Introduced
|
* Introduced
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ namespace boost {
|
|||||||
if (pos > size())
|
if (pos > size())
|
||||||
BOOST_THROW_EXCEPTION(std::out_of_range("string_view::copy" ));
|
BOOST_THROW_EXCEPTION(std::out_of_range("string_view::copy" ));
|
||||||
size_type rlen = (std::min)(n, len_ - pos);
|
size_type rlen = (std::min)(n, len_ - pos);
|
||||||
traits_type::copy(s, data() + pos, rlen);
|
traits_type::copy(s, data() + pos, rlen);
|
||||||
return rlen;
|
return rlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -85,6 +85,19 @@
|
|||||||
"Daniel Frey <d.frey -at- gmx.de>"
|
"Daniel Frey <d.frey -at- gmx.de>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "utility/ostream_string",
|
||||||
|
"name": "ostream_string",
|
||||||
|
"description": "String formatted output function.",
|
||||||
|
"documentation": "doc/html/ostream_string.html",
|
||||||
|
"category": [
|
||||||
|
"IO"
|
||||||
|
],
|
||||||
|
"authors": "Glen Fernandes",
|
||||||
|
"maintainers": [
|
||||||
|
"Glen Fernandes <glenjofe -at- gmail.com>"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "utility/result_of",
|
"key": "utility/result_of",
|
||||||
"name": "Result Of",
|
"name": "Result Of",
|
||||||
@@ -98,6 +111,19 @@
|
|||||||
"Daniel Walker <daniel.j.walker -at- gmail.com>"
|
"Daniel Walker <daniel.j.walker -at- gmail.com>"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "utility/string_ref",
|
||||||
|
"name": "string_ref",
|
||||||
|
"description": "String view templates.",
|
||||||
|
"documentation": "doc/html/string_ref.html",
|
||||||
|
"category": [
|
||||||
|
"Containers"
|
||||||
|
],
|
||||||
|
"authors": "Marshall Clow",
|
||||||
|
"maintainers": [
|
||||||
|
"Marshall Clow <marshall -at- idio.com>"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "utility/value_initialized",
|
"key": "utility/value_initialized",
|
||||||
"name": "Value Initialized",
|
"name": "Value Initialized",
|
||||||
|
|||||||
@@ -119,8 +119,8 @@
|
|||||||
also want <code>x > y, x >= y,</code> and <code>x <= y</code>.
|
also want <code>x > y, x >= y,</code> and <code>x <= y</code>.
|
||||||
Moreover, unless your class has really surprising behavior, some of these
|
Moreover, unless your class has really surprising behavior, some of these
|
||||||
related operators can be defined in terms of others (e.g. <code>x >= y
|
related operators can be defined in terms of others (e.g. <code>x >= y
|
||||||
<=> !(x < y)</code>). Replicating this boilerplate for multiple
|
is equivalent to !(x < y)</code>). Replicating this boilerplate for
|
||||||
classes is both tedious and error-prone. The <cite><a href=
|
multiple classes is both tedious and error-prone. The <cite><a href=
|
||||||
"../../boost/operators.hpp">boost/operators.hpp</a></cite> templates help
|
"../../boost/operators.hpp">boost/operators.hpp</a></cite> templates help
|
||||||
by generating operators for you at namespace scope based on other
|
by generating operators for you at namespace scope based on other
|
||||||
operators you've defined in your class.</p>
|
operators you've defined in your class.</p>
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include <cstddef> // for NULL, std::size_t, std::ptrdiff_t
|
#include <cstddef> // for NULL, std::size_t, std::ptrdiff_t
|
||||||
#include <cstring> // for std::strchr and std::strcmp
|
#include <cstring> // for std::strchr and std::strcmp
|
||||||
#include <cstdlib> // for std::malloc and std::free
|
#include <cstdlib> // for std::malloc and std::free
|
||||||
|
#include <cstdio> // for EOF
|
||||||
|
|
||||||
#include <boost/config.hpp>
|
#include <boost/config.hpp>
|
||||||
#include <boost/utility/string_view.hpp>
|
#include <boost/utility/string_view.hpp>
|
||||||
@@ -19,11 +20,11 @@
|
|||||||
#if __cplusplus >= 201402L
|
#if __cplusplus >= 201402L
|
||||||
struct constexpr_char_traits
|
struct constexpr_char_traits
|
||||||
{
|
{
|
||||||
typedef char char_type;
|
typedef char char_type;
|
||||||
typedef int int_type;
|
typedef int int_type;
|
||||||
typedef std::streamoff off_type;
|
typedef std::streamoff off_type;
|
||||||
typedef std::streampos pos_type;
|
typedef std::streampos pos_type;
|
||||||
typedef std::mbstate_t state_type;
|
typedef std::mbstate_t state_type;
|
||||||
|
|
||||||
static void assign(char_type& c1, const char_type& c2) noexcept { c1 = c2; }
|
static void assign(char_type& c1, const char_type& c2) noexcept { c1 = c2; }
|
||||||
static constexpr bool eq(char_type c1, char_type c2) noexcept { return c1 == c2; }
|
static constexpr bool eq(char_type c1, char_type c2) noexcept { return c1 == c2; }
|
||||||
@@ -43,11 +44,11 @@ struct constexpr_char_traits
|
|||||||
static constexpr int_type eof() noexcept { return EOF; }
|
static constexpr int_type eof() noexcept { return EOF; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// yields:
|
// yields:
|
||||||
// 0 if for each i in [0,n), X::eq(s1[i],s2[i]) is true;
|
// 0 if for each i in [0,n), X::eq(s1[i],s2[i]) is true;
|
||||||
// else, a negative value if, for some j in [0,n), X::lt(s1[j],s2[j]) is true and
|
// else, a negative value if, for some j in [0,n), X::lt(s1[j],s2[j]) is true and
|
||||||
// for each i in [0,j) X::eq(s2[i],s2[i]) is true;
|
// for each i in [0,j) X::eq(s2[i],s2[i]) is true;
|
||||||
// else a positive value.
|
// else a positive value.
|
||||||
constexpr int constexpr_char_traits::compare(const char_type* s1, const char_type* s2, size_t n) noexcept
|
constexpr int constexpr_char_traits::compare(const char_type* s1, const char_type* s2, size_t n) noexcept
|
||||||
{
|
{
|
||||||
for (; n != 0; --n, ++s1, ++s2)
|
for (; n != 0; --n, ++s1, ++s2)
|
||||||
@@ -77,38 +78,38 @@ int main()
|
|||||||
constexpr string_view sv2{"abc", 3}; // ptr, len
|
constexpr string_view sv2{"abc", 3}; // ptr, len
|
||||||
constexpr string_view sv3{"def"}; // ptr
|
constexpr string_view sv3{"def"}; // ptr
|
||||||
|
|
||||||
constexpr const char *s1 = "";
|
constexpr const char *s1 = "";
|
||||||
constexpr const char *s2 = "abc";
|
constexpr const char *s2 = "abc";
|
||||||
|
|
||||||
static_assert( (sv1 == sv1), "" );
|
|
||||||
|
|
||||||
static_assert(!(sv1 == sv2), "" );
|
|
||||||
static_assert( (sv1 != sv2), "" );
|
|
||||||
static_assert( (sv1 < sv2), "" );
|
|
||||||
static_assert( (sv1 <= sv2), "" );
|
|
||||||
static_assert(!(sv1 > sv2), "" );
|
|
||||||
static_assert(!(sv1 >= sv2), "" );
|
|
||||||
|
|
||||||
static_assert(!(s1 == sv2), "" );
|
static_assert( (sv1 == sv1), "" );
|
||||||
static_assert( (s1 != sv2), "" );
|
|
||||||
static_assert( (s1 < sv2), "" );
|
|
||||||
static_assert( (s1 <= sv2), "" );
|
|
||||||
static_assert(!(s1 > sv2), "" );
|
|
||||||
static_assert(!(s1 >= sv2), "" );
|
|
||||||
|
|
||||||
static_assert(!(sv1 == s2), "" );
|
static_assert(!(sv1 == sv2), "" );
|
||||||
static_assert( (sv1 != s2), "" );
|
static_assert( (sv1 != sv2), "" );
|
||||||
static_assert( (sv1 < s2), "" );
|
static_assert( (sv1 < sv2), "" );
|
||||||
static_assert( (sv1 <= s2), "" );
|
static_assert( (sv1 <= sv2), "" );
|
||||||
static_assert(!(sv1 > s2), "" );
|
static_assert(!(sv1 > sv2), "" );
|
||||||
static_assert(!(sv1 >= s2), "" );
|
static_assert(!(sv1 >= sv2), "" );
|
||||||
|
|
||||||
static_assert( sv1.compare(sv2) < 0, "" );
|
static_assert(!(s1 == sv2), "" );
|
||||||
static_assert( sv1.compare(sv1) == 0, "" );
|
static_assert( (s1 != sv2), "" );
|
||||||
static_assert( sv3.compare(sv1) > 0, "" );
|
static_assert( (s1 < sv2), "" );
|
||||||
|
static_assert( (s1 <= sv2), "" );
|
||||||
|
static_assert(!(s1 > sv2), "" );
|
||||||
|
static_assert(!(s1 >= sv2), "" );
|
||||||
|
|
||||||
static_assert( sv1.compare(s2) < 0, "" );
|
static_assert(!(sv1 == s2), "" );
|
||||||
static_assert( sv1.compare(s1) == 0, "" );
|
static_assert( (sv1 != s2), "" );
|
||||||
static_assert( sv3.compare(s1) > 0, "" );
|
static_assert( (sv1 < s2), "" );
|
||||||
|
static_assert( (sv1 <= s2), "" );
|
||||||
|
static_assert(!(sv1 > s2), "" );
|
||||||
|
static_assert(!(sv1 >= s2), "" );
|
||||||
|
|
||||||
|
static_assert( sv1.compare(sv2) < 0, "" );
|
||||||
|
static_assert( sv1.compare(sv1) == 0, "" );
|
||||||
|
static_assert( sv3.compare(sv1) > 0, "" );
|
||||||
|
|
||||||
|
static_assert( sv1.compare(s2) < 0, "" );
|
||||||
|
static_assert( sv1.compare(s1) == 0, "" );
|
||||||
|
static_assert( sv3.compare(s1) > 0, "" );
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user