forked from boostorg/typeof
Compare commits
88 Commits
svn-branch
...
boost-1.67
Author | SHA1 | Date | |
---|---|---|---|
080f05ea46 | |||
0047815f4a | |||
e789dbdcbe | |||
e9f4579047 | |||
ec502afe5d | |||
a9298ee94f | |||
d6f7132800 | |||
05ad6402ef | |||
8475a449d3 | |||
a506733d99 | |||
be4cdd3a29 | |||
5d737d61e5 | |||
733e1e94c8 | |||
2b4df4f09f | |||
12e1fe615a | |||
681499bba4 | |||
7db26fbf83 | |||
64ad04d3eb | |||
72e3e5ac18 | |||
ec9d092345 | |||
ab7073f32d | |||
03ae4b3465 | |||
1d3589e9c0 | |||
d8b8af69ac | |||
4994d5be13 | |||
ed7d30939d | |||
c394d0a5ae | |||
6aea11f3df | |||
5bbb552f28 | |||
5bf1a089bd | |||
4e34737b9c | |||
8092dd0003 | |||
9fcf6ff70e | |||
2334bc2bf7 | |||
e56adea1b1 | |||
731e9ce0ad | |||
4fab1b5d17 | |||
85eed8ff60 | |||
81e54ccb1f | |||
e9749f185f | |||
b46f8efd6b | |||
c75b62533a | |||
d04dc539a0 | |||
1468636543 | |||
468e0de51e | |||
dcb1e95d25 | |||
bfb19140f1 | |||
3892d59ff8 | |||
4aab62e71c | |||
0f21fe555a | |||
ef283a6a74 | |||
33ae5341c1 | |||
cde21a588d | |||
3ecb3bf102 | |||
1c1ab4c883 | |||
8d8d35c1ae | |||
84ec781ea1 | |||
f7df17a93a | |||
ed21868c25 | |||
c66289f7ac | |||
43b4d4522c | |||
8868adc891 | |||
452b493b7a | |||
eeff4e592c | |||
1b65bfc95d | |||
eda5c4afba | |||
340148f738 | |||
64ba3be86f | |||
d337b0837a | |||
dddbb00da4 | |||
935b36d8f5 | |||
5bd010787a | |||
55ac93f947 | |||
366ab1b621 | |||
aede9c2866 | |||
2b92bbcb21 | |||
dff8a5c505 | |||
a460694e5d | |||
db9203fb0e | |||
9a14e20bc5 | |||
47a4b2a2c1 | |||
337fe1fdf6 | |||
11b18afcce | |||
7cbdf2406a | |||
97b9bda347 | |||
041f9cfd24 | |||
c17f725e5f | |||
35874c8e32 |
199
.travis.yml
Normal file
199
.travis.yml
Normal file
@ -0,0 +1,199 @@
|
||||
# Copyright 2016, 2017 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
language: cpp
|
||||
|
||||
sudo: false
|
||||
|
||||
python: "2.7"
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
- /feature\/.*/
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- BOGUS_JOB=true
|
||||
|
||||
matrix:
|
||||
|
||||
exclude:
|
||||
- env: BOGUS_JOB=true
|
||||
|
||||
include:
|
||||
- os: linux
|
||||
compiler: g++
|
||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
|
||||
|
||||
- os: linux
|
||||
compiler: g++-4.7
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-4.8
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- os: linux
|
||||
compiler: g++-4.9
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-5
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-6
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: clang++
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.5
|
||||
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.5
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.5
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.6
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.6
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.7
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.7
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.8
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.9
|
||||
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.9
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-4.0
|
||||
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-4.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-5.0
|
||||
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-5.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-5.0
|
||||
|
||||
- os: osx
|
||||
compiler: clang++
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
|
||||
|
||||
install:
|
||||
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
|
||||
- cd ..
|
||||
- git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule update --init tools/build
|
||||
- git submodule update --init libs/config
|
||||
- git submodule update --init tools/boostdep
|
||||
- cp -r $TRAVIS_BUILD_DIR/* libs/typeof
|
||||
- python tools/boostdep/depinst/depinst.py typeof
|
||||
- ./bootstrap.sh
|
||||
- ./b2 headers
|
||||
|
||||
script:
|
||||
- |-
|
||||
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
|
||||
- ./b2 libs/typeof/test toolset=$TOOLSET cxxstd=$CXXSTD
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: always
|
62
appveyor.yml
Normal file
62
appveyor.yml
Normal file
@ -0,0 +1,62 @@
|
||||
# Copyright 2016 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
version: 1.0.{build}-{branch}
|
||||
|
||||
shallow_clone: true
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
|
||||
platform:
|
||||
- x64
|
||||
|
||||
environment:
|
||||
matrix:
|
||||
- ARGS: --toolset=msvc-9.0 address-model=32
|
||||
- ARGS: --toolset=msvc-10.0 address-model=32
|
||||
- ARGS: --toolset=msvc-11.0 address-model=32
|
||||
- ARGS: --toolset=msvc-12.0 address-model=32
|
||||
- ARGS: --toolset=msvc-14.0 address-model=32
|
||||
- ARGS: --toolset=msvc-12.0 address-model=64
|
||||
- ARGS: --toolset=msvc-14.0 address-model=64
|
||||
- ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
ARGS: --toolset=msvc-14.1 address-model=64
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
ARGS: --toolset=msvc-14.1 address-model=32
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest
|
||||
- ARGS: --toolset=gcc address-model=64
|
||||
PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
|
||||
- ARGS: --toolset=gcc address-model=64 cxxflags=-std=gnu++1z
|
||||
PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
|
||||
- ARGS: --toolset=gcc address-model=32
|
||||
PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;%PATH%
|
||||
- ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition
|
||||
PATH: C:\MinGW\bin;%PATH%
|
||||
|
||||
|
||||
install:
|
||||
- cd ..
|
||||
- git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule update --init tools/build
|
||||
- git submodule update --init libs/config
|
||||
- git submodule update --init tools/boostdep
|
||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\typeof\
|
||||
- python tools/boostdep/depinst/depinst.py typeof
|
||||
- bootstrap
|
||||
- b2 headers
|
||||
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- cd libs\config\test
|
||||
- ..\..\..\b2 config_info_travis_install %ARGS%
|
||||
- config_info_travis
|
||||
- cd ..\..\typeof\test
|
||||
- ..\..\..\b2 -j3 %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES
|
@ -10,11 +10,20 @@ boostbook standalone
|
||||
:
|
||||
typeof
|
||||
:
|
||||
<xsl:param>boost.root=../../../..
|
||||
<xsl:param>nav.layout=none
|
||||
<xsl:param>navig.graphics=0
|
||||
;
|
||||
|
||||
install html : ../../../doc/html/boostbook.css ;
|
||||
install html : ../../../doc/src/boostbook.css ;
|
||||
install ../ : ../../../boost.png ;
|
||||
|
||||
|
||||
###############################################################################
|
||||
alias boostdoc
|
||||
: typeof
|
||||
:
|
||||
:
|
||||
: ;
|
||||
explicit boostdoc ;
|
||||
alias boostrelease ;
|
||||
explicit boostrelease ;
|
||||
|
@ -1,4 +1,4 @@
|
||||
[library Boost.Typeof
|
||||
[library Boost.Typeof
|
||||
[authors [Vertleyb, Arkadiy], [Holt, Peder]]
|
||||
[copyright 2004 2005 Arkadiy Vertleyb, Peder Holt]
|
||||
[license
|
||||
@ -383,6 +383,14 @@ Redefine if you want the Typeof Library to handle functions with more parameters
|
||||
|
||||
[endsect]
|
||||
|
||||
[section:messages MESSAGES]
|
||||
|
||||
Define `BOOST_TYPEOF_MESSAGE` before including boost/typeof/typeof.hpp to
|
||||
include messages "using typeof emulation" and "using native typeof".
|
||||
By default, these messages will not be displayed.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section:limit_size LIMIT_SIZE]
|
||||
|
||||
The `BOOST_TYPEOF_LIMIT_SIZE` macro defines the size of the compile-time sequence
|
||||
|
34
include/boost/typeof/decltype.hpp
Normal file
34
include/boost/typeof/decltype.hpp
Normal file
@ -0,0 +1,34 @@
|
||||
// Copyright (C) 2006 Arkadiy Vertleyb
|
||||
// Copyright (C) 2017 Daniela Engert
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_DECLTYPE_HPP_INCLUDED
|
||||
# define BOOST_TYPEOF_DECLTYPE_HPP_INCLUDED
|
||||
|
||||
#include <boost/type_traits/remove_cv.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
|
||||
namespace boost { namespace type_of {
|
||||
template<typename T>
|
||||
using remove_cv_ref_t = typename remove_cv<typename remove_reference<T>::type>::type;
|
||||
}}
|
||||
|
||||
#define BOOST_TYPEOF(expr) boost::type_of::remove_cv_ref_t<decltype(expr)>
|
||||
#define BOOST_TYPEOF_TPL BOOST_TYPEOF
|
||||
|
||||
#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
|
||||
struct name {\
|
||||
typedef BOOST_TYPEOF_TPL(expr) type;\
|
||||
};
|
||||
|
||||
#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
|
||||
struct name {\
|
||||
typedef BOOST_TYPEOF(expr) type;\
|
||||
};
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TYPE(x)
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
|
||||
|
||||
#endif //BOOST_TYPEOF_DECLTYPE_HPP_INCLUDED
|
||||
|
0
include/boost/typeof/dmc/typeof_impl.hpp
Executable file → Normal file
0
include/boost/typeof/dmc/typeof_impl.hpp
Executable file → Normal file
0
include/boost/typeof/encode_decode.hpp
Executable file → Normal file
0
include/boost/typeof/encode_decode.hpp
Executable file → Normal file
0
include/boost/typeof/encode_decode_params.hpp
Executable file → Normal file
0
include/boost/typeof/encode_decode_params.hpp
Executable file → Normal file
0
include/boost/typeof/incr_registration_group.hpp
Executable file → Normal file
0
include/boost/typeof/incr_registration_group.hpp
Executable file → Normal file
0
include/boost/typeof/int_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/int_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/integral_template_param.hpp
Executable file → Normal file
0
include/boost/typeof/integral_template_param.hpp
Executable file → Normal file
2
include/boost/typeof/message.hpp
Executable file → Normal file
2
include/boost/typeof/message.hpp
Executable file → Normal file
@ -2,7 +2,7 @@
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#if defined(_MSC_VER) && !defined BOOST_TYPEOF_SILENT
|
||||
#if defined(_MSC_VER) && defined BOOST_TYPEOF_MESSAGES
|
||||
# pragma message(BOOST_TYPEOF_TEXT)
|
||||
#endif
|
||||
#undef BOOST_TYPEOF_TEXT
|
||||
|
0
include/boost/typeof/modifiers.hpp
Executable file → Normal file
0
include/boost/typeof/modifiers.hpp
Executable file → Normal file
@ -15,9 +15,7 @@
|
||||
# include <boost/type_traits/is_function.hpp>
|
||||
# include <boost/utility/enable_if.hpp>
|
||||
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
|
||||
# include <typeinfo>
|
||||
# endif
|
||||
# include <typeinfo>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
@ -25,7 +23,7 @@ namespace boost
|
||||
{
|
||||
|
||||
//Compile time constant code
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1300) && defined(_MSC_EXTENSIONS)
|
||||
# if defined(_MSC_EXTENSIONS)
|
||||
template<int N> struct the_counter;
|
||||
|
||||
template<typename T,int N = 5/*for similarity*/>
|
||||
@ -85,26 +83,7 @@ namespace boost
|
||||
|
||||
//Typeof code
|
||||
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,==1300)
|
||||
template<typename ID>
|
||||
struct msvc_extract_type
|
||||
{
|
||||
template<bool>
|
||||
struct id2type_impl;
|
||||
|
||||
typedef id2type_impl<true> id2type;
|
||||
};
|
||||
|
||||
template<typename T, typename ID>
|
||||
struct msvc_register_type : msvc_extract_type<ID>
|
||||
{
|
||||
template<>
|
||||
struct id2type_impl<true> //VC7.0 specific bugfeature
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
};
|
||||
#elif BOOST_WORKAROUND(BOOST_MSVC,>=1400)
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1400)
|
||||
struct msvc_extract_type_default_param {};
|
||||
|
||||
template<typename ID, typename T = msvc_extract_type_default_param>
|
||||
@ -189,7 +168,6 @@ namespace boost
|
||||
{
|
||||
typedef char(*type)[encode_type<T>::value];
|
||||
};
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
|
||||
template<typename T> typename disable_if<
|
||||
typename is_function<T>::type,
|
||||
typename sizer<T>::type>::type encode_start(T const&);
|
||||
@ -197,10 +175,6 @@ namespace boost
|
||||
template<typename T> typename enable_if<
|
||||
typename is_function<T>::type,
|
||||
typename sizer<T>::type>::type encode_start(T&);
|
||||
# else
|
||||
template<typename T>
|
||||
typename sizer<T>::type encode_start(T const&);
|
||||
# endif
|
||||
template<typename Organizer, typename T>
|
||||
msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
|
||||
|
||||
|
0
include/boost/typeof/native.hpp
Executable file → Normal file
0
include/boost/typeof/native.hpp
Executable file → Normal file
0
include/boost/typeof/pointers_data_members.hpp
Executable file → Normal file
0
include/boost/typeof/pointers_data_members.hpp
Executable file → Normal file
3
include/boost/typeof/register_fundamental.hpp
Executable file → Normal file
3
include/boost/typeof/register_fundamental.hpp
Executable file → Normal file
@ -34,8 +34,7 @@ BOOST_TYPEOF_REGISTER_TYPE(long double)
|
||||
BOOST_TYPEOF_REGISTER_TYPE(wchar_t)
|
||||
#endif
|
||||
|
||||
#if (defined(BOOST_MSVC) && (BOOST_MSVC == 1200)) \
|
||||
|| (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
|
||||
#if (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
|
||||
|| (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER == 1200))
|
||||
BOOST_TYPEOF_REGISTER_TYPE(unsigned __int8)
|
||||
BOOST_TYPEOF_REGISTER_TYPE(__int8)
|
||||
|
0
include/boost/typeof/register_mem_functions.hpp
Executable file → Normal file
0
include/boost/typeof/register_mem_functions.hpp
Executable file → Normal file
0
include/boost/typeof/std/bitset.hpp
Executable file → Normal file
0
include/boost/typeof/std/bitset.hpp
Executable file → Normal file
0
include/boost/typeof/std/complex.hpp
Executable file → Normal file
0
include/boost/typeof/std/complex.hpp
Executable file → Normal file
0
include/boost/typeof/std/deque.hpp
Executable file → Normal file
0
include/boost/typeof/std/deque.hpp
Executable file → Normal file
0
include/boost/typeof/std/fstream.hpp
Executable file → Normal file
0
include/boost/typeof/std/fstream.hpp
Executable file → Normal file
6
include/boost/typeof/std/functional.hpp
Executable file → Normal file
6
include/boost/typeof/std/functional.hpp
Executable file → Normal file
@ -10,8 +10,10 @@
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
#ifndef BOOST_NO_CXX98_FUNCTION_BASE
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_function, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_function, 3)
|
||||
#endif//BOOST_NO_CXX98_FUNCTION_BASE
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::plus, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::minus, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::multiplies, 1)
|
||||
@ -30,6 +32,8 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::logical_not, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::unary_negate, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binary_negate, 1)
|
||||
|
||||
#ifndef BOOST_NO_CXX98_BINDERS
|
||||
|
||||
#if defined(__MWERKS__) && defined(_MSL_EXTENDED_BINDERS)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder1st, 2)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::binder2nd, 2)
|
||||
@ -52,4 +56,6 @@ BOOST_TYPEOF_REGISTER_TEMPLATE(std::mem_fun1_ref_t, 3)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::const_mem_fun1_ref_t, 3)
|
||||
#endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
|
||||
|
||||
#endif//BOOST_NO_CXX98_BINDERS
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_functional_hpp_INCLUDED
|
||||
|
0
include/boost/typeof/std/iostream.hpp
Executable file → Normal file
0
include/boost/typeof/std/iostream.hpp
Executable file → Normal file
0
include/boost/typeof/std/istream.hpp
Executable file → Normal file
0
include/boost/typeof/std/istream.hpp
Executable file → Normal file
0
include/boost/typeof/std/iterator.hpp
Executable file → Normal file
0
include/boost/typeof/std/iterator.hpp
Executable file → Normal file
0
include/boost/typeof/std/list.hpp
Executable file → Normal file
0
include/boost/typeof/std/list.hpp
Executable file → Normal file
0
include/boost/typeof/std/locale.hpp
Executable file → Normal file
0
include/boost/typeof/std/locale.hpp
Executable file → Normal file
0
include/boost/typeof/std/map.hpp
Executable file → Normal file
0
include/boost/typeof/std/map.hpp
Executable file → Normal file
2
include/boost/typeof/std/memory.hpp
Executable file → Normal file
2
include/boost/typeof/std/memory.hpp
Executable file → Normal file
@ -12,6 +12,8 @@
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::allocator, 1)
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::raw_storage_iterator, 2)
|
||||
#ifndef BOOST_NO_AUTO_PTR
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(std::auto_ptr, 1)
|
||||
#endif//BOOST_NO_AUTO_PTR
|
||||
|
||||
#endif//BOOST_TYPEOF_STD_memory_hpp_INCLUDED
|
||||
|
0
include/boost/typeof/std/ostream.hpp
Executable file → Normal file
0
include/boost/typeof/std/ostream.hpp
Executable file → Normal file
0
include/boost/typeof/std/queue.hpp
Executable file → Normal file
0
include/boost/typeof/std/queue.hpp
Executable file → Normal file
0
include/boost/typeof/std/set.hpp
Executable file → Normal file
0
include/boost/typeof/std/set.hpp
Executable file → Normal file
0
include/boost/typeof/std/sstream.hpp
Executable file → Normal file
0
include/boost/typeof/std/sstream.hpp
Executable file → Normal file
0
include/boost/typeof/std/stack.hpp
Executable file → Normal file
0
include/boost/typeof/std/stack.hpp
Executable file → Normal file
0
include/boost/typeof/std/streambuf.hpp
Executable file → Normal file
0
include/boost/typeof/std/streambuf.hpp
Executable file → Normal file
0
include/boost/typeof/std/string.hpp
Executable file → Normal file
0
include/boost/typeof/std/string.hpp
Executable file → Normal file
0
include/boost/typeof/std/utility.hpp
Executable file → Normal file
0
include/boost/typeof/std/utility.hpp
Executable file → Normal file
0
include/boost/typeof/std/valarray.hpp
Executable file → Normal file
0
include/boost/typeof/std/valarray.hpp
Executable file → Normal file
0
include/boost/typeof/std/vector.hpp
Executable file → Normal file
0
include/boost/typeof/std/vector.hpp
Executable file → Normal file
0
include/boost/typeof/template_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/template_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/template_template_param.hpp
Executable file → Normal file
0
include/boost/typeof/template_template_param.hpp
Executable file → Normal file
0
include/boost/typeof/type_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/type_encoding.hpp
Executable file → Normal file
0
include/boost/typeof/type_template_param.hpp
Executable file → Normal file
0
include/boost/typeof/type_template_param.hpp
Executable file → Normal file
95
include/boost/typeof/typeof.hpp
Executable file → Normal file
95
include/boost/typeof/typeof.hpp
Executable file → Normal file
@ -13,9 +13,18 @@
|
||||
# error both typeof emulation and native mode requested
|
||||
#endif
|
||||
|
||||
#if defined(__COMO__)
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/config/workaround.hpp>
|
||||
|
||||
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1900) && !defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_TYPEOF_EMULATION)
|
||||
# define BOOST_TYPEOF_DECLTYPE
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
|
||||
#elif defined(__COMO__)
|
||||
# ifdef __GNUG__
|
||||
# ifndef(BOOST_TYPEOF_EMULATION)
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
@ -49,7 +58,7 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
#elif defined(__GNUC__) || defined(__clang__)
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
@ -65,7 +74,7 @@
|
||||
# endif
|
||||
# define BOOST_TYPEOF_KEYWORD __typeof__
|
||||
# else
|
||||
# error typeof emulation is not supported
|
||||
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# endif
|
||||
# else // 9.x
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
@ -75,7 +84,22 @@
|
||||
# define BOOST_TYPEOF_KEYWORD __typeof__
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#elif defined __CODEGEARC__
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# endif
|
||||
# else
|
||||
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# endif
|
||||
#elif defined __BORLANDC__
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# endif
|
||||
# else
|
||||
# define BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# endif
|
||||
#elif defined __DMC__
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
@ -85,34 +109,21 @@
|
||||
# define MSVC_TYPEOF_HACK
|
||||
# endif
|
||||
#elif defined(_MSC_VER)
|
||||
# if (_MSC_VER <= 1300) // 6.5, 7.0
|
||||
# if (_MSC_VER >= 1310) // 7.1 ->
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# ifndef _MSC_EXTENSIONS
|
||||
# define BOOST_TYPEOF_EMULATION
|
||||
# else
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
# endif
|
||||
# include <boost/typeof/msvc/typeof_impl.hpp>
|
||||
# define MSVC_TYPEOF_HACK
|
||||
# else
|
||||
# error typeof emulation is not supported
|
||||
# endif
|
||||
# elif (_MSC_VER >= 1310) // 7.1, 8.0
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
# ifdef BOOST_TYPEOF_NATIVE
|
||||
# include <boost/typeof/msvc/typeof_impl.hpp>
|
||||
# define MSVC_TYPEOF_HACK
|
||||
# endif
|
||||
/*# else // 8.0
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# define BOOST_TYPEOF_EMULATION
|
||||
# endif
|
||||
# else
|
||||
# error native typeof is not supported
|
||||
# endif*/
|
||||
# endif
|
||||
|
||||
#elif defined(__HP_aCC)
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
@ -143,7 +154,29 @@
|
||||
# else
|
||||
# error native typeof is not supported
|
||||
# endif
|
||||
|
||||
#elif defined(__SUNPRO_CC)
|
||||
# if (__SUNPRO_CC < 0x590 )
|
||||
# ifdef BOOST_TYPEOF_NATIVE
|
||||
# error native typeof is not supported
|
||||
# endif
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# define BOOST_TYPEOF_EMULATION
|
||||
# endif
|
||||
# else
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
# define BOOST_TYPEOF_KEYWORD __typeof__
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(__IBM__TYPEOF__)
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# define BOOST_TYPEOF_NATIVE
|
||||
# endif
|
||||
# define BOOST_TYPEOF_KEYWORD __typeof__
|
||||
# endif
|
||||
#else //unknown compiler
|
||||
# ifndef BOOST_TYPEOF_NATIVE
|
||||
# ifndef BOOST_TYPEOF_EMULATION
|
||||
@ -163,7 +196,9 @@
|
||||
#define BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()\
|
||||
<boost/typeof/incr_registration_group.hpp>
|
||||
|
||||
#ifdef BOOST_TYPEOF_EMULATION
|
||||
#ifdef BOOST_TYPEOF_EMULATION_UNSUPPORTED
|
||||
# include <boost/typeof/unsupported.hpp>
|
||||
#elif defined BOOST_TYPEOF_EMULATION
|
||||
# define BOOST_TYPEOF_TEXT "using typeof emulation"
|
||||
# include <boost/typeof/message.hpp>
|
||||
# include <boost/typeof/typeof_impl.hpp>
|
||||
@ -177,7 +212,11 @@
|
||||
#elif defined(BOOST_TYPEOF_NATIVE)
|
||||
# define BOOST_TYPEOF_TEXT "using native typeof"
|
||||
# include <boost/typeof/message.hpp>
|
||||
# include <boost/typeof/native.hpp>
|
||||
# ifdef BOOST_TYPEOF_DECLTYPE
|
||||
# include <boost/typeof/decltype.hpp>
|
||||
# else
|
||||
# include <boost/typeof/native.hpp>
|
||||
# endif
|
||||
#else
|
||||
# error typeof configuration error
|
||||
#endif
|
||||
|
0
include/boost/typeof/typeof_impl.hpp
Executable file → Normal file
0
include/boost/typeof/typeof_impl.hpp
Executable file → Normal file
29
include/boost/typeof/unsupported.hpp
Normal file
29
include/boost/typeof/unsupported.hpp
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2010 Peder Holt
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_UNSUPPORTED_HPP_INCLUDED
|
||||
|
||||
namespace boost { namespace type_of {
|
||||
struct typeof_emulation_is_unsupported_on_this_compiler {};
|
||||
}}
|
||||
|
||||
#define BOOST_TYPEOF(expr) boost::type_of::typeof_emulation_is_unsupported_on_this_compiler
|
||||
#define BOOST_TYPEOF_TPL BOOST_TYPEOF
|
||||
|
||||
#define BOOST_TYPEOF_NESTED_TYPEDEF_TPL(name,expr) \
|
||||
struct name {\
|
||||
typedef BOOST_TYPEOF_TPL(expr) type;\
|
||||
};
|
||||
|
||||
#define BOOST_TYPEOF_NESTED_TYPEDEF(name,expr) \
|
||||
struct name {\
|
||||
typedef BOOST_TYPEOF(expr) type;\
|
||||
};
|
||||
|
||||
|
||||
#define BOOST_TYPEOF_REGISTER_TYPE(x)
|
||||
#define BOOST_TYPEOF_REGISTER_TEMPLATE(x, params)
|
||||
|
||||
#endif
|
0
include/boost/typeof/vector.hpp
Executable file → Normal file
0
include/boost/typeof/vector.hpp
Executable file → Normal file
0
include/boost/typeof/vector100.hpp
Executable file → Normal file
0
include/boost/typeof/vector100.hpp
Executable file → Normal file
0
include/boost/typeof/vector150.hpp
Executable file → Normal file
0
include/boost/typeof/vector150.hpp
Executable file → Normal file
0
include/boost/typeof/vector200.hpp
Executable file → Normal file
0
include/boost/typeof/vector200.hpp
Executable file → Normal file
0
include/boost/typeof/vector50.hpp
Executable file → Normal file
0
include/boost/typeof/vector50.hpp
Executable file → Normal file
16
meta/libraries.json
Normal file
16
meta/libraries.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"key": "typeof",
|
||||
"name": "Typeof",
|
||||
"authors": [
|
||||
"Arkadiy Vertleyb",
|
||||
"Peder Holt"
|
||||
],
|
||||
"description": "Typeof operator emulation.",
|
||||
"category": [
|
||||
"Emulation"
|
||||
],
|
||||
"maintainers": [
|
||||
"Arkadiy Vertleyb <vertleyb -at- hotmail.com>",
|
||||
"Peder Holt <peder.holt -at- gmail.com>"
|
||||
]
|
||||
}
|
@ -5,6 +5,7 @@
|
||||
|
||||
# Boost Typeof Library test Jamfile
|
||||
|
||||
import testing ;
|
||||
import set ;
|
||||
|
||||
# The special requirement is not ported yet.
|
||||
|
0
test/data_member.cpp
Executable file → Normal file
0
test/data_member.cpp
Executable file → Normal file
0
test/member_function.cpp
Executable file → Normal file
0
test/member_function.cpp
Executable file → Normal file
0
test/modifiers.cpp
Executable file → Normal file
0
test/modifiers.cpp
Executable file → Normal file
74
test/msvc_typeof_in_lambda.cpp
Normal file
74
test/msvc_typeof_in_lambda.cpp
Normal file
@ -0,0 +1,74 @@
|
||||
// Copyright (C) 2018 Tobias Loew
|
||||
// Use, modification and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/config/pragma_message.hpp>
|
||||
|
||||
#if defined(BOOST_NO_CXX11_LAMBDAS)
|
||||
|
||||
BOOST_PRAGMA_MESSAGE("Skipping test due to BOOST_NO_CXX11_LAMBDAS")
|
||||
int main() {}
|
||||
|
||||
#elif defined(BOOST_NO_CXX11_AUTO_DECLARATIONS)
|
||||
|
||||
BOOST_PRAGMA_MESSAGE("Skipping test due to BOOST_NO_CXX11_AUTO_DECLARATIONS")
|
||||
int main() {}
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/typeof/typeof.hpp>
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
namespace detail {
|
||||
template<class T> inline T& deref(T& r) {
|
||||
return r;
|
||||
}
|
||||
template<class T>
|
||||
struct wrapper {
|
||||
typedef T type;
|
||||
};
|
||||
|
||||
template<class T> wrapper<T> wrap(T&);
|
||||
};
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TEMPLATE(::detail::wrapper, 1)
|
||||
|
||||
void test_typeof_in_lambda() {
|
||||
// Visual Studio 2015 (BOOST_MSVC == 1900) had an internal compiler error with Boost 1.65 and 1.66 when using BOOST_SCOPE_EXIT inside a lambda
|
||||
// the error was due to a change of include in boost/typeof/typeof.hpp (<boost/typeof/decltype.hpp> instead of <boost/typeof/native.hpp>)
|
||||
// This test is an more or less minimal extract from the BOOST_SCOPE_EXIT macro expansions
|
||||
|
||||
// worked also with VS 2015 in version 1.65/1.66
|
||||
int n;
|
||||
typedef BOOST_TYPEOF(::detail::wrap(::detail::deref(n))) n_type_wrapped;
|
||||
typedef n_type_wrapped::type n_type;
|
||||
|
||||
int test;
|
||||
|
||||
auto check_property = [&n,&test]() {
|
||||
// internal compiler error with VS 2015 in version 1.65/1.66
|
||||
// minimal extract from
|
||||
//BOOST_SCOPE_EXIT(test) {
|
||||
// test = 42;
|
||||
//}BOOST_SCOPE_EXIT_END
|
||||
|
||||
// this compiles always (as long as the one before outside the lambda has the same name)
|
||||
typedef BOOST_TYPEOF(::detail::wrap(::detail::deref(n))) n_type_wrapped;
|
||||
typedef n_type_wrapped::type n_type;
|
||||
|
||||
// this fails with internal compiler error with VS 2015 in version 1.65/1.66
|
||||
typedef BOOST_TYPEOF(::detail::wrap(::detail::deref(test))) test_type_wrapped;
|
||||
typedef test_type_wrapped::type test_type;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
int main() {
|
||||
test_typeof_in_lambda();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
0
test/noncopyable.cpp
Executable file → Normal file
0
test/noncopyable.cpp
Executable file → Normal file
0
test/odr.hpp
Executable file → Normal file
0
test/odr.hpp
Executable file → Normal file
0
test/odr1.cpp
Executable file → Normal file
0
test/odr1.cpp
Executable file → Normal file
0
test/odr2.cpp
Executable file → Normal file
0
test/odr2.cpp
Executable file → Normal file
0
test/odr_no_uns1.cpp
Executable file → Normal file
0
test/odr_no_uns1.cpp
Executable file → Normal file
0
test/odr_no_uns1.hpp
Executable file → Normal file
0
test/odr_no_uns1.hpp
Executable file → Normal file
0
test/odr_no_uns2.cpp
Executable file → Normal file
0
test/odr_no_uns2.cpp
Executable file → Normal file
0
test/odr_no_uns2.hpp
Executable file → Normal file
0
test/odr_no_uns2.hpp
Executable file → Normal file
4
test/std.cpp
Executable file → Normal file
4
test/std.cpp
Executable file → Normal file
@ -42,8 +42,10 @@ BOOST_STATIC_ASSERT(boost::type_of::test<bitset<10> >::value);
|
||||
|
||||
// function objects
|
||||
|
||||
#ifndef BOOST_NO_CXX98_FUNCTION_BASE
|
||||
BOOST_STATIC_ASSERT((boost::type_of::test<unary_function<int, int> >::value));
|
||||
BOOST_STATIC_ASSERT((boost::type_of::test<binary_function<int, int, int> >::value));
|
||||
#endif//BOOST_NO_CXX98_FUNCTION_BASE
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<plus<int> >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<minus<int> >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<multiplies<int> >::value);
|
||||
@ -61,8 +63,10 @@ BOOST_STATIC_ASSERT(boost::type_of::test<logical_or<int> >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<logical_not<int> >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<unary_negate<negate<int> > >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<binary_negate<less<int> > >::value);
|
||||
#ifndef BOOST_NO_CXX98_BINDERS
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<binder1st<less<int> > >::value);
|
||||
BOOST_STATIC_ASSERT(boost::type_of::test<binder2nd<less<int> > >::value);
|
||||
#endif//BOOST_NO_CXX98_BINDERS
|
||||
|
||||
// valarray
|
||||
|
||||
|
0
test/template_dependent.cpp
Executable file → Normal file
0
test/template_dependent.cpp
Executable file → Normal file
0
test/template_enum.cpp
Executable file → Normal file
0
test/template_enum.cpp
Executable file → Normal file
0
test/template_int.cpp
Executable file → Normal file
0
test/template_int.cpp
Executable file → Normal file
0
test/template_multiword.cpp
Executable file → Normal file
0
test/template_multiword.cpp
Executable file → Normal file
0
test/template_tpl.cpp
Executable file → Normal file
0
test/template_tpl.cpp
Executable file → Normal file
0
test/template_type.cpp
Executable file → Normal file
0
test/template_type.cpp
Executable file → Normal file
0
test/test.hpp
Executable file → Normal file
0
test/test.hpp
Executable file → Normal file
0
test/type.cpp
Executable file → Normal file
0
test/type.cpp
Executable file → Normal file
Reference in New Issue
Block a user