Compare commits

...

295 Commits

Author SHA1 Message Date
bcddc892f7 glob headers 2022-07-05 10:48:45 +02:00
d2746d7d72 Rework as esp-idf component 2022-07-04 19:43:20 +02:00
d2a4a6bf0a Merge pull request #167 from boostorg/msvc2022_ci
Correct CI workflow and add 2022 tests.
2022-02-11 09:56:38 +00:00
273678042d Correct CI workflow and add 2022 tests. 2022-02-10 18:06:40 +00:00
bc26f6b192 Merge pull request #157 from eldiener/develop
[skip ci] Fixed operator traits example code for last issue.
2022-02-10 13:12:02 +00:00
a10ca89479 Merge pull request #163 from igaztanaga/patch-1
Fix -Wconversion warning for GCC / 64 bits
2022-02-10 13:10:42 +00:00
a184e146e3 Merge pull request #161 from boostorg/pr/tt-has-accurate-function
Fix misspelled macro name
2022-02-10 13:10:02 +00:00
8583d1a967 Fix -Wconversion warning for GCC / 64 bits
../../boost/type_traits/is_complete.hpp:47:14: error: conversion from ‘long unsigned int’ to ‘unsigned int’ may change value 
       ok_tag<sizeof(T)> check_is_complete(int);
2021-12-30 15:29:17 +01:00
b265ce8f3a Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2021-10-06 08:56:09 +01:00
e3dd034588 Remove obsolete test runner Xenial. 2021-10-06 08:55:49 +01:00
d37dc8c4b9 Merge pull request #162 from boostorg/test_on_cuda
Initial CUDA testing.
2021-10-06 08:18:21 +01:00
7ac69733b8 Update CI scripts for testing with CUDA device compile.
Fix inspection report issues.
2021-10-03 12:20:08 +01:00
18b6e30e9c Fix up CUDA device testing [CI SKIP] 2021-10-03 12:09:10 +01:00
09b102587f Misc CUDA testing fixes 2021-10-02 15:13:42 +01:00
a842eeda5c Initial CUDA testing. 2021-10-01 19:10:34 +01:00
693488cb29 Fix misspelled macro name 2021-07-04 19:55:29 +03:00
bfce306637 Update CMakeLists.txt 2021-06-10 02:04:51 +03:00
3d246cb5d1 Merge pull request #158 from sdarwin/meta_libraries
Fix comma in meta/libraries.json
2021-04-20 18:27:37 +01:00
567774cacb Fix comma in meta/libraries.json 2021-04-20 16:03:18 +00:00
cdbb996d3a Fixed operator traits example code for last issue. 2021-04-19 12:41:39 -04:00
30396ed792 Merge pull request #155 from boostorg/pr130
Integration test for PR130
2021-03-08 11:40:41 +00:00
cea791882b Merge branch 'develop' of https://github.com/bionicOnion/type_traits into pr130 2021-03-08 09:36:28 +00:00
396d97f5a6 Merge pull request #154 from boostorg/GHA
Add GHA first cut.
2021-03-08 09:32:29 +00:00
61c9e7699c C++latest not supported in /CLR mode. 2021-03-07 20:13:26 +00:00
64eb4e2f40 Add managed clr tests.
Remove travis and appveyor.
2021-03-07 19:39:50 +00:00
c3c1357c3d Fix up C++20 failure. 2021-03-07 12:44:18 +00:00
cf497924b1 Merge pull request #145 from tobias-loew/develop
Update type_with_alignment.hpp
2021-03-07 11:47:40 +00:00
71208778dd One more fix to CI script. Also fix msvc test failures. 2021-03-07 11:42:55 +00:00
4c2b7d5215 Try again with --hash on b2 command line. 2021-03-07 10:51:38 +00:00
a105c3531c Add GHA first cut. 2021-03-07 10:36:17 +00:00
d1994736b9 Fix for recent libc++ versions.
Tidy up drone script a little more.
2021-01-27 20:08:11 +00:00
d9d298170f Tidy up drone script. 2021-01-27 19:33:37 +00:00
95c8a8a567 Mark testing binary member operators as const.
Otherwise they generate ambiguities in C++20.
2021-01-27 19:33:13 +00:00
89a062e7b8 Disable testing volatile return types in C++20:
as they're deprecated.
2021-01-27 19:32:29 +00:00
1b0cf49465 Merge pull request #152 from eldiener/develop
[skip ci] Add "cxxstd" json field
2021-01-21 19:34:33 -05:00
2b8b797b88 [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-21 16:26:33 -05:00
a2cffe9c04 Update compilers tested on drone CI. 2021-01-18 17:05:49 +00:00
7ca204de52 Merge pull request #151 from sdarwin/drone
Drone config
2021-01-18 16:59:46 +00:00
92ceb4079b add drone config [ci skip] 2021-01-12 17:08:07 +00:00
59951c1853 Add missing ).
Fixes https://github.com/boostorg/type_traits/issues/150.
2020-12-25 16:55:55 +00:00
106b442289 Update type_with_alignment.hpp 2020-09-10 08:38:13 +02:00
e4228d7260 Update type_with_alignment.hpp
Replaced dead link
2020-09-09 20:09:25 +02:00
c6c7ff1647 Update is_trivially_copyable implementation for user move with defaulted copy 2020-08-14 09:53:04 -04:00
5588bb1ab7 Regenerate docs. 2020-06-23 18:53:39 +01:00
18962d99a4 Merge pull request #142 from glenfe/develop
Implement multiple type traits
2020-06-02 19:07:36 +01:00
f7f7dbf16e Implement is_trivially_copyable 2020-05-31 03:00:48 -04:00
7a071a5918 Implement is_scoped_enum and is_unscoped_enum 2020-05-31 02:49:03 -04:00
f8e9879d4e Implement conjunction, disjunction, negation 2020-05-31 02:47:41 -04:00
bd5bede326 Merge pull request #140 from eldiener/develop
Changes for Embarcadero C++ clang-based compilers, targeting Boost 1.74. Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost conf…
2020-05-06 20:30:10 +01:00
ea2dae279f Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers. 2020-03-23 09:21:49 -04:00
7ee9910b2f Merge branch 'develop' 2020-01-06 15:47:53 +02:00
b57a7a54e4 Merge pull request #136 from boostorg/pr/add-cmake-install
Add CMake install support (needed by Atomic)
2019-12-28 09:50:02 -08:00
4e6975503f Disable installation without the superproject; add comments 2019-12-27 04:27:59 +02:00
b0f9c6cda1 Add CMake install support (needed by Atomic) 2019-12-26 17:19:43 +02:00
d91381b8f2 Merge branch 'develop' 2019-11-01 16:45:06 +00:00
4a32bcc9ff Merge pull request #131 from boostorg/circle_ci_inspect
clean up inspection failures and add circle-ci testing.
2019-08-26 08:13:43 +01:00
741b8b395b clean up inspection failures and add circle-ci testing. 2019-08-22 19:17:36 +01:00
97f71e0cb3 Issue 123: Revised /clr conditionals to handle __stdcall and __cdecl properly 2019-07-22 11:30:13 -05:00
9351dae4a4 Issue 123: Modified preprocessor conditionals to fix errors with /clr builds 2019-07-16 16:08:12 -05:00
cbf7c56a66 Merge pull request #128 from boostorg/gcc9
Add clang-8 and gcc-9 to CI tests.
2019-06-28 18:22:48 +01:00
12325df58f Add clang-8 and gcc-9 to CI tests. 2019-06-28 11:53:12 +01:00
0044e85b4c Merge branch 'develop' 2019-06-28 08:35:15 +01:00
f8069ad974 Merge pull request #127 from boostorg/xenial
CI: update distribution and clang testing.
2019-06-27 08:35:38 +01:00
5ff6b669ea CI: Try again to get clang-3.7 working. 2019-06-25 12:58:31 +01:00
86855dac99 CI: clang-3.7 needs "precise" distro? 2019-06-25 08:28:17 +01:00
c54dd34571 Merge pull request #119 from Kojoley/patch-1
Remove expected fail on tricky_rvalue_test
2019-06-24 18:18:28 +01:00
17359415f5 Make sure distributions match and are supported. 2019-06-24 16:01:39 +01:00
f9e8143ac5 CI: update distribution and clang testing. 2019-06-23 08:50:30 +01:00
efc0be6b55 is_function_cxx_11.hpp: There's no __fastcall on clr.
Update for noexcept functions, also updates CI script to test C++17 as that's required to trigger the error.
Fixes: https://github.com/boostorg/type_traits/pull/124.
2019-06-13 11:49:46 +01:00
ba7a01aa96 Merge pull request #122 from gongminmin/Vs2019Arm64
Fix the compiling errors in VS2019 ARM64 with /std:c++17
2019-06-13 11:17:57 +01:00
dbc8980715 Fix the compiling errors in VS2019 ARM64 with /std:c++17 2019-06-07 10:53:40 +08:00
dea6757dbf Add support for noexcept detection via _NOEXCEPT_TYPES_SUPPORTED with msvc.
See https://github.com/boostorg/type_traits/issues/118#issuecomment-475228526
2019-03-22 19:25:33 +00:00
decc409800 Remove expected fail on tricky_rvalue_test
Was fixed in #83
2019-03-22 00:33:36 +03:00
7d89ec0426 Fix use of noexcept for msvc with /Zc:noexceptTypes- flag set.
Fixes https://github.com/boostorg/type_traits/issues/118.
2019-03-21 10:23:21 +00:00
f9bc21647a Merge pull request #116 from Kojoley/vc14.2-still-has-underlying-enum-type-bug
VS2017 and VS2019 still has underlying enum type bug
2019-03-16 08:51:42 +00:00
cfe031d40d Merge pull request #117 from Kojoley/suppress-clang-Wignored-qualifiers-in-test.hpp
test.hpp: Suppress Clang -Wignored-qualifiers warning
2019-03-16 08:50:48 +00:00
6f7e2ec545 test.hpp: Suppress Clang -Wignored-qualifiers warning
../libs/type_traits/test/test.hpp:221:9: warning: 'const' qualifier on reference type 'r_type' (aka 'int &') has no effect [-Wignored-qualifiers]
2019-03-15 00:27:09 +03:00
04350b86c5 VS2017 and VS2019 still has underlying enum type bug
Opened a new bug report in their new bug report system for the issue https://developercommunity.visualstudio.com/content/problem/490264/standard-violation-enum-underlying-type-cannot-rep.html
2019-03-15 00:08:20 +03:00
d2dbcca368 Migrate explicit-failures-markup.xml to the repository 2019-03-15 00:03:55 +03:00
cbcb282722 Merge branch 'develop' 2019-03-03 09:37:19 +00:00
f6ef5722ef Merge pull request #115 from glenfe/develop
Use make_void directly instead of void_t for compatibility
2019-02-27 18:04:39 +00:00
453564a501 Use make_void directly instead of void_t for compatibility 2019-02-27 08:29:43 -05:00
625c40e750 Merge pull request #112 from glenfe/develop
Implement copy_reference and copy_cv_ref
2019-02-26 20:16:42 +00:00
4ca80785f8 Merge pull request #110 from Kojoley/patch-1
is_assignable_test: Fixed copy-paste error
2019-02-26 09:20:53 +00:00
6a472a381d Implement copy_reference and copy_cv_ref 2019-02-23 00:05:35 -05:00
e1f882b25d is_assignable_test: Fixed copy-paste error
The test `is_assignable<noexcept_assignable&>` checks self-assignability, while the
operator was defined for other type, so it was testing the non-noexcept implicit
generated copy assignment operator instead.
2019-02-19 19:11:03 +03:00
0e09cb7178 Merge branch 'develop' 2019-02-14 09:17:30 +00:00
5e7844bea1 Fix up is_function/is_member_function_pointer for msvc/arm compiler. 2019-01-10 17:53:50 +00:00
c65f41d4c0 Merge pull request #104 from boostorg/travis-os-x-10.1
Travis: Update XCode versions.
2019-01-07 20:33:22 +00:00
c71e2ffb6e Merge pull request #95 from glenfe/develop
Implement is_bounded_array and is_unbounded_array
2019-01-07 18:34:40 +00:00
55a3ee0a3d clang/OSX: Disable untestable is_function/is_member_function bits. 2019-01-07 18:30:22 +00:00
38f9545757 is_member_function_pointer_cxx_11.hpp: and another attempt to get the clang OS X logic correct. 2019-01-07 13:37:11 +00:00
649c585b9c is_member_function_pointer_cxx_11.hpp: don't specialize on noexcept for clang/apple. 2019-01-07 09:16:29 +00:00
d8bdd309d7 Implement is_bounded_array and is_unbounded_array 2019-01-07 00:30:16 -05:00
941e29e0a6 Apple X Code doesn't support noexcept as a separate type in partial specializations. 2019-01-06 17:04:15 +00:00
13d477be5d Travis CI: Add more OS X testers, plus clang-6.
Update configuration to handle more broken compilers that can't deduce noexcept parameters in template partial specializations.
2019-01-06 11:29:49 +00:00
9830bcb8a9 Travis: Add Xcode 9.1. 2019-01-06 10:36:36 +00:00
94e055c9ba Travis: Update XCode versions. 2019-01-06 09:22:25 +00:00
23aa33892f Merge pull request #102 from boostorg/msvc-calling-convension-tests
Add better tests for msvc native calling conventions.
2019-01-06 08:36:56 +00:00
6fca9826f6 Add support for /arch:IA32 in msvc Win32 builds when there is no __vectorcall.
Add CI tests for that configuration.
2019-01-05 18:39:49 +00:00
cacb2bb3f6 Disable __fastcall for x86+CLR. 2019-01-05 09:14:57 +00:00
3df3014681 Merge branch 'develop' into msvc-calling-convension-tests
Resolved Conflicts:
	include/boost/type_traits/detail/is_function_cxx_11.hpp
	include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp
2019-01-04 19:35:57 +00:00
ee7e6ff397 Fix /clr test failures. 2019-01-04 18:18:37 +00:00
16e04ea7c0 No __vectorcal prior to vc12. 2019-01-04 13:23:51 +00:00
99777eba8e Merge pull request #100 from boostorg/feature/msvc-clr
Add CI support for testing /clr option with msvc.
2019-01-04 09:09:42 +00:00
fdb5378d12 Regenerate old workaround versions of function type testers to handle __vectorcall. 2019-01-03 19:19:54 +00:00
72e02341a2 Fix is_likely_lambda.hpp for msvc-14.0 in CLR mode. 2019-01-03 17:59:30 +00:00
1ead421054 Add better tests for msvc native calling conventions. 2019-01-03 17:52:51 +00:00
51957092d2 Add CI support for testing /clr option with msvc.
Fix CLR failures thanks to : https://github.com/boostorg/type_traits/issues/99.
2018-12-30 09:58:53 +00:00
bdaa002b74 Update CI scripts to handle new module layout. 2018-12-20 09:05:45 +00:00
903b59e2a3 Merge branch 'develop'
Resolved Conflicts:
	include/boost/type_traits/detail/config.hpp
2018-12-12 18:26:20 +00:00
efc694d679 Fix use of BOOST_WORKAROUND in config.hpp, should be BOOST_GCC < 40900 rather than <= 40800 in case there is a patch level. Fixes: https://github.com/boostorg/type_traits/issues/97 2018-12-05 18:43:44 +00:00
19bc3525a3 config.hpp: change workaround to < gcc-4.8.5 rather than < 4.9.
See https://github.com/boostorg/type_traits/issues/97.
2018-11-26 17:51:00 +00:00
d49f6e05f5 Fix use of BOOST_WORKAROUND in config.hpp, should be BOOST_GCC < 40900 rather than <= 40800 in case there is a patch level. Fixes: https://github.com/boostorg/type_traits/issues/97 2018-11-26 17:41:45 +00:00
b8e0395cd8 Add CI badges.
[CI SKIP]
2018-11-06 19:37:09 +00:00
5737ed46eb Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-11-05 18:17:14 +00:00
b6351c3def Fully qualify some names to prevent ambiguity over detail::. 2018-11-05 18:16:57 +00:00
45b893f52c Merge pull request #92 from Mike-Devel/min_cmake
[CMake] Add minimal cmake file
2018-11-04 15:24:49 +00:00
eafca43cc6 Merge pull request #94 from Lastique/patch-1
Fix is_constructible header reference.
2018-11-04 15:24:22 +00:00
f146e70e9b Fix is_constructible header reference. 2018-11-04 13:46:32 +03:00
6fd9601014 [CMake] Add minimal cmake file
Generate cmake target that can be used by other libraries
to express their dependency on this library and retrieve
any configuration information such as the include directory,
transitive dependencies, necessary compiler options or the
required c++ standards level.
2018-10-25 12:07:01 +02:00
af1f17cd15 Add README.md.
[CI SKIP]
2018-10-15 18:01:58 +01:00
a5bb8d7336 Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-09-14 17:41:16 +01:00
cbb9fecd92 Fix #pragma push/pop mismatch in is_virtual_base_of.hpp
Fixes https://github.com/boostorg/type_traits/issues/91.
2018-09-14 17:40:36 +01:00
ee4f7aab0c Merge pull request #90 from boostorg/documentation
Add note to documentation and correct spelling
2018-09-14 17:12:10 +01:00
53aec15195 Add note to documentation and correct spelling 2018-09-08 11:17:48 -04:00
fcc0711c33 Update e-mail address in comments 2018-09-08 11:17:06 -04:00
744b49751a Merge pull request #89 from glenfe/develop
Add enable_if_ and enable_if_t. Sever dependency on Core.
2018-08-27 18:10:48 +01:00
7aeee229b9 Merge pull request #88 from boostorg/feature/is_noncopyable
Do not include boost/noncopyable.hpp to avoid a dependency on Core
2018-08-27 18:09:12 +01:00
2baafd4a3a Add enable_if_ and enable_if_t. Sever dependency on Core. 2018-08-25 21:00:17 -04:00
0d7d9c72ef Add comment describing the use of noncopyable_::base_token 2018-08-25 15:36:29 +03:00
91c5184fca Do not include boost/noncopyable.hpp to avoid a dependency on Core 2018-08-25 01:45:50 +03:00
7639c5820b is_function_test.cpp: correct macro usage (again). 2018-08-14 19:40:40 +01:00
529b3fe7bd Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-08-14 17:54:31 +01:00
e4f356dab3 Use correct macro in is_function_test.cpp. 2018-08-14 17:54:14 +01:00
685c47ecca Use the correct feature macro in is_function.hpp 2018-08-14 09:39:40 +01:00
17af798061 Merge pull request #85 from boostorg/issue6
Big update for is_function and is_member_function_pointer for modern …
2018-08-13 18:31:06 +01:00
e0868d6474 GCC warning fix has to be constrained to gcc-7. 2018-08-13 09:29:46 +01:00
4b6b13ad25 Disable gcc warning. 2018-08-12 19:37:33 +01:00
c3412181c4 Refactor is_function.hpp/is_member_function_pointer.hpp:
With separate files for C++03 and C++11 versions.
Add workarounds for compilers with insufficient C++11 support to handle the new code.
Add support for C++17 noexcept function signatures and update tests accordingly.
2018-08-12 11:04:33 +01:00
0c9643ee88 Disable some partial specializations in x64 mode. 2018-08-11 19:51:10 +01:00
52fbd03a6c Big update for is_function and is_member_function_pointer for modern compilers with modern features.
See https://github.com/boostorg/type_traits/issues/81.
2018-08-11 19:32:02 +01:00
f78c5330cd Document improved unary operators.
[CI SKIP]
2018-08-11 09:50:49 +01:00
baad6ce607 Merge pull request #84 from boostorg/issue80
Add tests for scoped_enums.
2018-08-11 09:26:47 +01:00
635388aafd Issue80: remove redundant test. 2018-08-11 08:30:08 +01:00
66a146c1cb Disable additional specialization for is_function for msvc-10.0 -
it doesn't work and leads to ambiguous overloads.
Also change the expected result of some tests for msvc-14.0.
2018-08-10 18:13:02 +01:00
a408a29ffc Update has_complement tests. 2018-08-10 12:52:21 +01:00
5bd3e11429 Make the unary operator traits use "perfect" detection.
Update tests accordingly.
2018-08-09 19:48:36 +01:00
344efaf161 Merge pull request #83 from boostorg/issue8
Tentative fix for msvc-10 issue with rvalue refs.
2018-08-07 20:50:22 +01:00
56d111026c tricky_rvalue_test.cpp: correct msvc version workaround. 2018-08-07 18:23:38 +01:00
8d740945a8 is_rvalue_reference: More partial specialisations for obsolete compilers. 2018-08-07 17:59:11 +01:00
e958c63a6d rvalue refs and msvc-10: add fix for is_function as well. 2018-08-06 19:20:34 +01:00
e574d2c134 Add tests for scoped_enums.
See https://github.com/boostorg/type_traits/issues/80 and https://svn.boost.org/trac10/ticket/9913.
2018-08-06 19:11:20 +01:00
0c59e22982 Tentative fix for msvc-10 issue with rvalue refs.
See: https://svn.boost.org/trac10/ticket/5795 and https://github.com/boostorg/type_traits/issues/78.
2018-08-06 18:31:26 +01:00
458b1fa071 Update docs on decay.
Fixes: https://github.com/boostorg/type_traits/issues/33.
[CI SKIP]
2018-08-06 13:22:28 +01:00
ad326841ec Correct spelling of "__clang__" so that the headers compile on clang/windows. 2018-08-03 18:31:46 +01:00
373c9fc4b4 Travis: add gcc-8 to tested compilers. 2018-07-01 10:36:06 +01:00
059ed8839d Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-05-27 10:59:40 +01:00
bd67d9075f Documentation update.
[CI SKIP]
2018-05-27 10:59:31 +01:00
3b6c340fc2 Merge pull request #75 from dsakurai/develop
Use boost::declval instead of std::declval
2018-05-22 17:59:47 +01:00
c2c0b47565 Merge pull request #74 from boostorg/issue73
clang intrinsics: Use __is_trivially_constructible and __is_trivially…
2018-05-19 20:47:02 +01:00
7b115c8d0e Tests: disable some failing tests for msvc-11.0. 2018-05-19 19:45:10 +01:00
4c9add90d0 Intrinsics: update msvc trivial move intrinsics.
Tighten up the tests.
2018-05-19 09:29:13 +01:00
dec6869a3f Use boost::declval instead of std::declval 2018-05-18 16:18:30 +02:00
7eab81300e clang intrinsics: disable trivial move construction testing for c++03. 2018-05-18 08:00:28 +01:00
8898c6d1bb clang intrinsics: Use __is_trivially_constructible and __is_trivially_assignable to test for trivial move construct and assign.
See https://github.com/boostorg/type_traits/issues/73.
2018-05-17 18:26:31 +01:00
a3114e9f79 Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-05-15 18:23:17 +01:00
6a1fbd45f6 Move some #pragma warning(pop)'s to the correct place. 2018-05-15 18:22:59 +01:00
6eb8a15c25 Merge pull request #71 from boostorg/pr31
CI integration test for PR31.
2018-05-12 08:18:49 +01:00
7bba2acbcc is_virtual_base_of.hpp: simplify and use clang version for all compilers. 2018-05-11 17:19:44 +01:00
fbc50bfd12 is_virtual_base_of: more workarounds for clang and older gcc versions 2018-05-10 11:34:02 +01:00
02270ed668 is_virtual_base_of: tentative fixes for clang and older gcc versions.
[CI SKIP]
2018-05-10 10:31:24 +01:00
770c095dcc is_virtual_base_of_test.cpp: add more tests for tricky cases and bug reports. 2018-05-09 19:31:45 +01:00
63dea93d99 is_virtual_base_of.hpp: Reinstate old version for old broken compilers. 2018-05-09 19:14:50 +01:00
e2041351c8 intrinsics.hpp: fix typo in comment. 2018-05-09 18:14:13 +01:00
b48fae5352 is_final_test.cpp: disable some tests for msvc-12 for which there is no workaround.
The compiler is unable to detect final class templates.
2018-05-09 18:13:58 +01:00
e3fb4a6e85 Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-05-09 18:01:27 +01:00
2cc2697e53 Merge branch 'hotfix/is_virtual_base_of' of https://github.com/csernib/type_traits into pr31 2018-05-08 18:59:29 +01:00
01f9a0b43a Add test for const-qualified final classes. 2018-05-08 18:53:17 +01:00
00951845fb Merge pull request #60 from Flast/patch-1
Added is_final intrinsic for msvc 2013 and later
2018-05-08 18:38:34 +01:00
eda07fdec9 common_arithmetic_type.hpp: remove duplicate const. 2018-05-08 11:09:25 +01:00
963131c1db is_final_test.cpp: Fix for compilers with no final keyword. 2018-05-08 07:58:34 +01:00
356635219b Fix for is_final which works around GCC bug, see https://github.com/boostorg/type_traits/issues/69 2018-05-07 18:50:28 +01:00
1305001a58 Trivial fix for GCCXML, fixes: https://github.com/boostorg/type_traits/issues/69 2018-05-07 18:49:53 +01:00
d06ee12c5c has_nothrow_copy: new test case fails for msvc-12 and there seems to be no way to make it work. 2018-05-07 18:18:44 +01:00
9052a3830e has_nothrow_copy: disable intrinsic for gcc-4.8 as well as 4.7, and the test for gcc-4.4 2018-05-07 13:36:20 +01:00
53f99bb1a6 Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-05-07 09:47:45 +01:00
59e81bca80 Tentative fix for git issue #56: failing has_nothrow_copy with deleted constructor 2018-05-07 09:47:06 +01:00
9e880c3187 Merge pull request #70 from Flast/patch-2
Fixed a typo in is_assignable doc
2018-05-07 08:09:14 +01:00
9548118ed4 Fixed a typo in is_assignable doc 2018-05-07 12:50:25 +09:00
547263c001 Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-05-04 20:04:14 +01:00
7e9909324a Fix missing #pragma warning(pop)'s for msvc
Fixes https://github.com/boostorg/type_traits/issues/68
2018-05-04 20:03:59 +01:00
307f37ab58 Merge pull request #65 from danieljames/include-yes-no-type
Include yes_no_type.hpp from is_complete.hpp
2018-03-31 11:38:12 +01:00
4c3706113a Fix for type-punning warnings from gcc.
See: https://svn.boost.org/trac10/ticket/13479
2018-03-29 11:31:35 +01:00
2bb1021fe8 Include yes_no_type.hpp from is_complete.hpp 2018-03-14 13:49:25 +00:00
e34ad30482 Fix some more gcc-4.5/6 testing errors. 2018-03-13 18:32:15 +00:00
7e19a87e67 Update tests for GCC-4.6.x failures.
Also suppress one new msvc warning (from 14.1 update 6).
2018-03-13 18:03:18 +00:00
ab184c2def Merge branch 'develop' of https://github.com/boostorg/type_traits into develop 2018-03-13 08:55:44 +00:00
bc54a3f54f Travis.yml: add gcc-4.4 and 4.6 testers. 2018-03-13 08:55:30 +00:00
b06185c29f is_nothrow_move_constructible: Tentatively re-enable support for gcc-4.7.x as it seems to work locally 2018-03-07 19:04:26 +00:00
24fa07bbd7 Update history and regenerate docs.
[CI SKIP]
2018-02-21 18:51:22 +00:00
e5003ad808 is_likely_lambda.hpp: Allow use of the workaround for msvc-14.0.
Note that 14.0 update 3 doesn't require this, but update 2 and earlier do.
2018-02-21 18:30:50 +00:00
5240cd67d8 Comparison tests: disable tests that gcc-4.6 and earlier cannot handle. 2018-02-16 19:38:41 +00:00
10f09a6327 is_complete: implementation chokes with gcc-4.5, disable for that compiler.
[CI SKIP]
2018-02-16 19:32:41 +00:00
75160cd755 clang: we can't use the new operator detector code for clang < 3.2. 2018-02-16 19:08:49 +00:00
8d938a4bb9 binary operator traits: previous fix using is_complete can't be used since even incomplete types may have non-member operators declared. 2018-02-14 18:09:52 +00:00
875b95974a binary operators: msvc-12 and under can't cope with new gcc workarounds, so disable in that case. 2018-02-13 19:55:06 +00:00
84f9b6da68 binary operators: add revised workaounds for gcc-4.7 and 4.8 2018-02-13 19:18:12 +00:00
28658d6c11 Comparison operators: add poor man's workaround for captureless lambdas 2018-02-12 18:30:08 +00:00
0155b7030c Update docs for binary operator traits. 2018-02-11 11:31:23 +00:00
014ac72782 Switch to a centralised macro for binary operator traits implementation selection. 2018-02-10 17:40:39 +00:00
7d42b545e9 Merge pull request #62 from glenfe/develop
For MSVC2017 use detector_t instead of make_void
2018-02-10 11:59:38 +00:00
3a0382ccbe Merge pull request #64 from boostorg/issue_13012
Improve binary operators.
2018-02-10 11:45:32 +00:00
fb4430512d Fix up -= and += detection for clang. 2018-02-09 18:20:23 +00:00
94e54c030d binary operators: disable new code for older gcc versions 2018-02-08 19:21:13 +00:00
98d6eaf1e9 Add missing function bodies to test cases - it suppresses gcc warnings. 2018-02-08 09:02:05 +00:00
e9399adefa Add tests for improved binary operators. 2018-02-07 19:50:26 +00:00
e4d3cba6dd Binary Operators: switch to the "detection idiom" if the compiler supports it.
This gives us almost perfect fidelity in the detection and solves the known issues for binary operators.
Also fixes: https://svn.boost.org/trac10/ticket/13012.
2018-02-07 19:14:50 +00:00
fdf9b67335 is_complete: correct namespace names. 2018-02-07 18:03:08 +00:00
ed21a2d9c7 is_complete: no std::declval in gcc-4.4 and earlier.
So disable in that case.
2018-02-07 18:00:06 +00:00
b406b574a5 For MSVC2017 use detector_t, instead of make_void.
(Not using boost::void_t to workaround a VC12 defect)
2018-02-06 22:16:52 -05:00
6d294b5ff2 is_complete: qualify the detail namespace as otherwise it can trip up msvc-14.0. 2018-02-05 12:05:15 +00:00
23520c13a1 Merge pull request #61 from boostorg/issue12285
Assert when we try to use an incomplete type on a trait which require…
2018-02-04 19:27:23 +00:00
df4eccb911 Document is_complete.
[CI SKIP]
2018-02-04 19:26:10 +00:00
0886e13a99 Assert completeness fixes: fix up msvc failures. 2018-02-04 18:15:34 +00:00
bfb6384a0a Assert on incomplete types: begin fixing test failures for msvc-12.0, 14.0, and clang. 2018-02-04 12:52:24 +00:00
ac351390b2 Assert when we try to use an incomplete type on a trait which requires complete types as arguments.
This prevents some traits from doing the wrong thing (ie compiling but giving the wrong answer when handed an incomplete type.
See https://svn.boost.org/trac10/ticket/12285.
A by-product of this is we add is_complete as a new trait.
2018-02-04 10:03:30 +00:00
85a03d3453 Fix integral_constant.hpp for the case where the user has explicitly defined BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE.
Fixes: https://svn.boost.org/trac10/ticket/12212
2018-02-03 16:18:12 +00:00
33bd73e26d Add macro to indicate when is_constructible is fully implemented.
Fixes: https://svn.boost.org/trac10/ticket/12003
[SKIP CI]
2018-02-02 19:24:52 +00:00
30b029d937 Fix typos in is_mem_fun_pointer_tester.hpp.
See https://svn.boost.org/trac10/ticket/11884
[SKIP CI]
2018-02-02 19:18:18 +00:00
f5823d6732 type_traits:function type testing, change to explicit noexcept specifiers as clang-4 can't handle partial-specialisation on noexcept(bool).
Also reinstate and test support for functions with ellipsis.
2018-02-02 18:17:03 +00:00
29c6fc7aa2 Added is_final intrinsic for msvc 2013 and later 2018-02-02 12:12:27 +09:00
c8c95f18ca type_traits: function types, update to detect functions with exception specifications in is_function and is_member_function_pointer. 2018-02-01 19:14:30 +00:00
b78fd5f29d Type_traits.detection idiom: flesh out docs and add history. 2018-01-31 18:55:04 +00:00
35c105501b Implement detection idiom toolkit 2018-01-28 09:40:24 -05:00
5d5c651ea6 Type_traits.is_default_constructible: workaround for std::pair is required for more compilers. We don't need functional appveyor.yml any more. 2018-01-28 10:44:12 +00:00
05c4fdcabb Merge branch 'feature/container_hash' of https://github.com/danieljames/type_traits into develop
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2018-01-28 10:40:14 +00:00
7beb519980 GCC-5.x also needs workaround for std::pair issue 2018-01-27 18:31:28 +00:00
a6e879f091 Add tests and tentative fix for issue with clang mis-identifying pairs of non-constructible types. See github #51. 2018-01-25 13:18:38 +00:00
5ed289c317 Update docs. 2018-01-25 10:56:23 +00:00
837fe4d245 Merge pull request #57 from danieljames/develop
Fallback for is_nothrow_swappable on pre-C++11
2018-01-25 10:44:12 +00:00
3e9608230c Fallback for is_nothrow_swappable on pre-C++11 2017-11-28 22:12:01 +00:00
1146f73070 Travis.yml: Correct use of "cxxstd-dialect". 2017-10-28 16:56:08 +01:00
af2546ae5c travis.yml: need to unset IFS before b2 invocation. 2017-10-28 08:25:13 +01:00
3530a015ed One more try with travis.yml: remove ":" from command line as travis mangles it. 2017-10-27 17:18:19 +01:00
4cd7655730 Correct travis.yml syntax one more time. 2017-10-27 08:31:49 +01:00
4ac0c52b66 Merge pull request #50 from Lastique/fix_clang30_decltype
Add a workaround for clang 3.0 not supporting decltype in base class list
2017-10-26 18:34:02 +01:00
9ee7745626 Merge pull request #47 from kuhlenough/develop
VxWorks has double align issues similar to unix
2017-10-26 18:32:02 +01:00
51c82dc0fe Merge pull request #46 from tanzislam/fix_detail_namespace_for_borland
Fix 'detail' namespace opening for Borland
2017-10-26 18:28:24 +01:00
73fd7479dd Type_traits: try using --hash on the Appveyor b2 command line as we appear to be exceeding the max path length. 2017-10-26 18:09:49 +01:00
ceaddeef42 Type_traits: correct travis.yml. 2017-10-26 11:27:44 +01:00
bb94535ba8 Type_traits: add CI defines to Jamfile. Update travis script to build multiple configurations at once for faster build times. 2017-10-25 19:10:02 +01:00
455e6129be Added a workaround for clang 3.0 not supporting decltype in base class list.
Use an additional proxy class to define the base class using decltype in a
typedef, which is supported by the compiler, judging by Boost.Config tests.
2017-09-19 14:51:45 +03:00
7bc78f51ff Move the detail namespace entirely within the #ifndef __BORLANDC__-block. 2017-09-08 21:37:03 +01:00
b23f18cac2 is_complex.hpp: include boost/config.hpp first so we get compiler specific workarounds prior to including std lib headers. 2017-09-07 18:09:53 +01:00
d6f2dd9186 Whoops, updating intrinsics.hpp again 2017-09-06 10:33:34 -04:00
dfaad9ed21 Update intrinsics.hpp 2017-09-05 23:54:19 -04:00
54f3c61f08 VxWorks has double align issues similar to unix
but only on 32bit IA
2017-09-05 23:46:58 -04:00
907bbbb759 Fix 'detail' namespace closing for Borland
In `type_with_alignment.hpp`, the `boost::detail` namespace is opened in line 28 just before starting the main `#ifndef __BORLANDC__`-block at line 30. The `detail` namespace is closed within the `#ifndef`-block at line 79. Highlight that namespace closing-brace with a comment for visibility.

Furthermore, the main `#ifndef __BORLANDC__`-block has a `#else`-case beginning at line 209, which effectively begins the `boost::detail` namespace at that point. This continuation of the namespace was missing a closing brace, causing a compilation failure with C++Builder (due to not finding `::boost::tt_align_ns::a16` in line 230, but merely finding `::boost::detail::tt_align_ns::a16`). Add that closing brace in line 217 with a visibility comment, just before opening the `tt_align_ns` namespace (which is expected by existing code to be directly inside the `boost` namespace, and not inside `boost::detail`).
2017-08-27 15:15:31 +01:00
06d07e3d11 Merge pull request #44 from boostorg/2017_07_21
Cherry pick fixes from develop for Boost-1.47
2017-07-21 18:27:30 +01:00
d17304143e Merge branch 'develop' into 2017_07_21 2017-07-21 13:38:00 +01:00
defd5612a4 Replace exception specification with noexcept(false) (except.spec. invalid in C++17) 2017-07-21 13:33:56 +01:00
d59b9f419e Suppress g++ bool use warnings 2017-07-21 13:33:56 +01:00
bc98c3b05f Add g++-7 in -std=c++ mode as well 2017-07-21 13:33:55 +01:00
33328ddad0 Add g++-7, clang-4 to Travis 2017-07-21 13:33:55 +01:00
db654452a3 Fix MSVC failures caused by warning C4800 2017-07-21 13:33:55 +01:00
bd30493d1c Add corresponding required include 2017-07-21 13:33:54 +01:00
26b2676928 Add floating_point_promotion test 2017-07-21 13:33:54 +01:00
6acc283b49 Add missing includes 2017-07-21 13:33:53 +01:00
05982c1b09 Reorder test includes to test header self-sufficiency 2017-07-21 13:33:53 +01:00
336162c8c4 Merge pull request #42 from boostorg/feature/is_list_constructible
Add is_list_constructible
2017-07-16 19:04:56 +01:00
1321945e8b Merge pull request #41 from boostorg/pdimov-patch-1
Fix typo in .travis.yml
2017-07-16 19:03:11 +01:00
847b2b3b06 Merge pull request #40 from boostorg/feature/is_nothrow_swappable
Add is_nothrow_swappable
2017-07-16 19:02:45 +01:00
7af1f795c1 Merge pull request #43 from boostorg/pr/fix-gcc7-warnings
Disable g++-7 warnings in a proper manner
2017-07-16 19:00:21 +01:00
aa2158f97b Define CI_SUPPRESS_KNOWN_ISSUES on Travis, suppress known g++-4 issues 2017-07-16 02:29:40 +03:00
7d7322655e Disable g++-7 warnings in a proper manner 2017-07-16 02:06:18 +03:00
a3bef3752c Disable failures caused by g++-7 -std=c++17 bug 2017-07-16 01:44:06 +03:00
d5be3746a1 Suppress warnings on g++ 4.x 2017-07-16 01:20:50 +03:00
ced4870cb0 Add is_list_constructible 2017-07-15 23:03:38 +03:00
0ea90ad466 Fix typo in .travis.yml 2017-07-15 21:51:11 +03:00
b47d4aa421 Disable is_nothrow_swappable_test for the built-in clang++ on Travis, libstdc++ 4.6 is too old 2017-07-15 21:32:13 +03:00
1154c16b34 std::vector isn't nothrow swappable pre-C++17 2017-07-15 20:41:23 +03:00
aa8dcb47cf Add is_nothrow_swappable 2017-07-15 18:57:34 +03:00
64421a443b Merge pull request #39 from boostorg/pr/clang-4
Add g++-7, clang-4 to Travis
2017-07-15 16:09:29 +01:00
d19ff6cec4 Replace exception specification with noexcept(false) (except.spec. invalid in C++17) 2017-07-15 15:20:35 +03:00
53f5c2776c Suppress g++ bool use warnings 2017-07-15 15:19:44 +03:00
0c3d8420ee Add g++-7 in -std=c++ mode as well 2017-07-15 15:05:25 +03:00
3d81378e92 Add g++-7, clang-4 to Travis 2017-07-15 14:36:29 +03:00
97db3128ad Merge pull request #37 from boostorg/pr/missing-config-includes
Add missing includes
2017-07-07 08:11:32 +01:00
8f62efcdfc Fix MSVC failures caused by warning C4800 2017-07-06 00:05:17 +03:00
2260b04c5d Add corresponding required include 2017-07-01 23:54:09 +03:00
468ed1b9be Add floating_point_promotion test 2017-07-01 23:53:15 +03:00
0cae4b02e4 Add missing includes 2017-07-01 23:45:13 +03:00
06c90d642b Reorder test includes to test header self-sufficiency 2017-07-01 23:37:04 +03:00
7f792f96c9 Make is_virtual_base_of work on final classes 2017-03-29 22:58:49 +02:00
580 changed files with 18551 additions and 8576 deletions

57
.circleci/config.yml Normal file
View File

@ -0,0 +1,57 @@
version: 2
jobs:
build:
environment:
- BOOST_LIBRARY=type_traits
- CXX_STANDARD=gnu++11
docker:
- image: gcc:7
steps:
- checkout
- run:
name: Setting up Environment
command: |
echo 'export BOOST="$HOME/boost-local"' >> $BASH_ENV
if [ $CIRCLE_BRANCH = "master" ]; then
echo 'export BOOST_BRANCH="master"' >> $BASH_ENV;
else
echo 'export BOOST_BRANCH="develop"' >> $BASH_ENV;
fi
echo 'export BOOST_REMOVE="$BOOST/boost/libs/$BOOST_LIBRARY"' >> $BASH_ENV
HOME_SED_=$(echo $HOME | sed -e 's/\//\\\//g')
echo 'export HOME_SED=$HOME_SED_' >> $BASH_ENV
- run:
name: install pre dependencies
command: |
apt-get update -yqq
apt-get install git xsltproc docbook-xsl docbook-xml -y
- run:
name: Initializing git repo for boost
command: |
echo BOOST=$BOOST BOOST_REMOVE=$BOOST_REMOVE BOOST_LIBRARY=$BOOST_LIBRARY BOOST_BRANCH=$BOOST_BRANCH PWD=$PWD
mkdir $BOOST
cd $BOOST
git clone --single-branch --branch $BOOST_BRANCH https://github.com/boostorg/boost.git
cd boost
git submodule update --init --merge
rm -rf $BOOST_REMOVE
mv $HOME/project $BOOST_REMOVE
- run:
name: Bootstrapping boost-build
command: |
cd $BOOST/boost && ./bootstrap.sh && ./b2 headers
echo "using xsltproc ;" | tee $HOME/user-config.jam
echo "using boostbook : /usr/share/xml/docbook/stylesheet/docbook-xsl : /usr/share/sgml/docbook/dtd/xml/4.2 ;" | tee -a $HOME/user-config.jam
- run:
name: Building inspect
command: |
cd $BOOST/boost/tools/inspect/build && ../../../b2 -j2 address-model=64 architecture=x86 toolset=gcc cxxflags="-std=gnu++14" release dist-bin
- run:
name: Building docs
command: |
cd $BOOST_REMOVE/doc && rm -rf html && ../../../b2 -j2 address-model=64 architecture=x86 toolset=gcc cxxflags="-std=gnu++14" release
- run:
name: Running Inspect
command: |
cd $BOOST_REMOVE && ../../dist/bin/inspect -text

54
.drone.star Normal file
View File

@ -0,0 +1,54 @@
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt)
#
# Copyright Rene Rivera 2020.
# For Drone CI we use the Starlark scripting language to reduce duplication.
# As the yaml syntax for Drone CI is rather limited.
#
#
globalenv={}
linuxglobalimage="cppalliance/droneubuntu1604:1"
windowsglobalimage="cppalliance/dronevs2019"
def main(ctx):
return [
linux_cxx("TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x Job 1", "g++", packages="g++-4.4", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.4', 'CXXSTD': '98,0x'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x Job 2", "g++", packages="g++-4.6", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.6', 'CXXSTD': '03,0x'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 Job 3", "g++-4.7", packages="g++-4.7", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.7', 'CXXSTD': '03,11'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11 Job 4", "g++-4.8", packages="g++-4.8", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.8', 'CXXSTD': '03,11'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11 Job 5", "g++-4.9", packages="g++-4.9", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.9', 'CXXSTD': '03,11'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z Job 6", "g++-5", packages="g++-5", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-5', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z Job 7", "g++-5", packages="g++-5", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-5', 'CXXSTD': '03,11,14,1z', 'CXXSTD_DIALECT': 'cxxstd-dialect=gnu'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z Job 8", "g++-6", packages="g++-6", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-6', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z Job 9", "g++-6", packages="g++-6", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-6', 'CXXSTD': '03,11,14,1z', 'CXXSTD_DIALECT': 'cxxstd-dialect=gnu'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17 Job 10", "g++-7", packages="g++-7", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-7', 'CXXSTD': '03,11,14,17'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17 Job 11", "g++-8", packages="g++-8", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-8', 'CXXSTD': '03,11,14,17'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17 Job 12", "g++-9", packages="g++-9", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-9', 'CXXSTD': '03,11,14,17,2a'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-10 CXXSTD=03,11,14,17,20 Job 13", "g++-10", packages="g++-10", image="cppalliance/droneubuntu2004:1", buildtype="boost", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-10', 'CXXSTD': '03,11,14,17,20'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03, Job 15", "clang++", packages="clang-3.5", llvm_os="precise", llvm_ver="3.5", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.5', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03, Job 16", "clang++", packages="clang-3.6", llvm_os="precise", llvm_ver="3.6", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.6', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03, Job 17", "clang++", packages="clang-3.7", llvm_os="precise", llvm_ver="3.7", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.7', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03, Job 18", "clang++-3.8", packages="clang-3.8", llvm_os="precise", llvm_ver="3.8", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.8', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03, Job 19", "clang++-3.9", packages="clang-3.9", llvm_os="precise", llvm_ver="3.9", buildtype="boost", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.9', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03, Job 20", "clang++-4.0", packages="clang-4.0", llvm_os="xenial", llvm_ver="4.0", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-4.0', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03, Job 21", "clang++-5.0", packages="clang-5.0", llvm_os="xenial", llvm_ver="5.0", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-5.0', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-5.0 -stdlib=libc++ CXXSTD=03,11,14 Job 22", "clang++-5.0 -stdlib=libc++", packages="libc++-dev clang-5.0", llvm_os="xenial", llvm_ver="5.0", buildtype="boost", image=linuxglobalimage, environment={'COMPILER': 'clang++-5.0 -stdlib=libc++', 'TOOLSET': 'clang', 'CXXSTD': '03,11,14'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,1z, Job 23", "clang++-6.0", packages="clang-6.0", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-6.0', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-6.0 -stdlib=libc++ CXXSTD=03,11,14 Job 24", "clang++-6.0 -stdlib=libc++", packages="clang-6.0 libc++-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", image=linuxglobalimage, environment={'COMPILER': 'clang++-6.0 -stdlib=libc++', 'TOOLSET': 'clang', 'CXXSTD': '03,11,14'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,1z Job 25", "clang++-7", packages="clang-7", llvm_os="xenial", llvm_ver="7", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-7', 'CXXSTD': '03,11,14,1z'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17 2a Job 26", "clang++-8", packages="clang-8", llvm_os="xenial", llvm_ver="8", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-8', 'CXXSTD': '03,11,14,17,2a'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a Job 27", "clang++-9", packages="clang-9", llvm_os="xenial", llvm_ver="9", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-9', 'CXXSTD': '03,11,14,17,2a'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,11,14,17,20 Job 28", "clang++-10", packages="clang-10", llvm_os="xenial", llvm_ver="10", buildtype="boost", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-10', 'CXXSTD': '03,11,14,17,20'}, globalenv=globalenv),
osx_cxx("XCode-11.7 CXXSTD=03,11,14,17,2a Job 29", "clang++", packages="", buildtype="boost", xcode_version="11.7", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,17,2a', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-10.2 CXXSTD=03,11,14,17,2a Job 30", "clang++", packages="", buildtype="boost", xcode_version="10.2", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,17,2a', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-9.4 CXXSTD=03,11,14,1z Job 31", "clang++", packages="", buildtype="boost", xcode_version="9.4", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-9.0 CXXSTD=03,11,14,1z Job 32", "clang++", packages="", buildtype="boost", xcode_version="9", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-8.3 CXXSTD=03,11,14,1z Job 33", "clang++", packages="", buildtype="boost", xcode_version="8.3", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-8.0 CXXSTD=03,11,14,1z Job 34", "clang++", packages="", buildtype="boost", xcode_version="8", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
osx_cxx("XCode-7.3 CXXSTD=03,11,14,1z Job 35", "clang++", packages="", buildtype="boost", xcode_version="7.3", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_OS_NAME': 'osx'}, globalenv=globalenv),
]
# from https://github.com/boostorg/boost-ci
load("@boost_ci//ci/drone/:functions.star", "linux_cxx","windows_cxx","osx_cxx","freebsd_cxx")

3
.drone/after-success.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash

3
.drone/before-install.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash

3
.drone/before-script.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash

56
.drone/boost.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
set -ex
export TRAVIS_BUILD_DIR=$(pwd)
export DRONE_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=$DRONE_BRANCH
export VCS_COMMIT_ID=$DRONE_COMMIT
export GIT_COMMIT=$DRONE_COMMIT
export REPO_NAME=$DRONE_REPO
export PATH=~/.local/bin:/usr/local/bin:$PATH
echo '==================================> BEFORE_INSTALL'
. .drone/before-install.sh
echo '==================================> INSTALL'
cd ..
git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init tools/build
git submodule update --init tools/boost_install
git submodule update --init libs/headers
git submodule update --init libs/config
git submodule update --init libs/assert
git submodule update --init libs/bind
git submodule update --init libs/core
git submodule update --init libs/detail
git submodule update --init libs/function
git submodule update --init libs/integer
git submodule update --init libs/move
git submodule update --init libs/mpl
git submodule update --init libs/preprocessor
git submodule update --init libs/static_assert
git submodule update --init libs/throw_exception
git submodule update --init libs/type_index
git submodule update --init libs/utility
cp -r $TRAVIS_BUILD_DIR/* libs/type_traits
./bootstrap.sh
./b2 headers
echo '==================================> BEFORE_SCRIPT'
. $DRONE_BUILD_DIR/.drone/before-script.sh
echo '==================================> SCRIPT'
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
IFS=','
for CXXLOCAL in $CXXSTD; do (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET cxxstd=$CXXLOCAL $CXXSTD_DIALECT && echo With Standard Version $CXXLOCAL && ./config_info_travis && rm ./config_info_travis) done
unset IFS
./b2 libs/type_traits/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT
echo '==================================> AFTER_SUCCESS'
. $DRONE_BUILD_DIR/.drone/after-success.sh

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

@ -0,0 +1,482 @@
# Copyright 2020 Evan Miller
# Copyright 2020 Matt Borland
# Copyright 2021 John Maddock
# 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)
name: CI
on:
push:
branches:
- master
- develop
pull_request:
release:
types: [published, created, edited]
jobs:
ubuntu-focal:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
compiler: [ g++-9, g++-10, clang++-9, clang++-10 ]
standard: [ c++03, c++11, c++14, c++17, c++2a, gnu++03, gnu++11, gnu++14, gnu++17, gnu++2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Set TOOLSET
run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV
- name: Add repository
continue-on-error: true
id: addrepo
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo
continue-on-error: true
id: retry1
if: steps.addrepo.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo 2
continue-on-error: true
id: retry2
if: steps.retry1.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install g++-9 g++-10 clang-9 clang-10 libgmp-dev libmpfr-dev libfftw3-dev
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Generate user config
run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : <cxxflags>-std=${{ matrix.standard }} ;" > ~/user-config.jam'
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=$TOOLSET
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=$TOOLSET
working-directory: ../boost-root/libs/type_traits/test
ubuntu-bionic:
runs-on: ubuntu-18.04
strategy:
fail-fast: false
matrix:
compiler: [ g++-7, g++-8, clang++-7, clang++-8 ]
standard: [ c++03, c++11, c++14, c++17, gnu++03, gnu++11, gnu++14, gnu++17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Set TOOLSET
run: echo ${{ matrix.compiler }} | awk '/^g/ { print "TOOLSET=gcc" } /^clang/ { print "TOOLSET=clang" }' >> $GITHUB_ENV
- name: Add repository
continue-on-error: true
id: addrepo
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo
continue-on-error: true
id: retry1
if: steps.addrepo.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo 2
continue-on-error: true
id: retry2
if: steps.retry1.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install g++-7 g++-8 clang-7 clang-8 libgmp-dev libmpfr-dev libfftw3-dev
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Generate user config
run: 'echo "using $TOOLSET : : ${{ matrix.compiler }} : <cxxflags>-std=${{ matrix.standard }} ;" > ~/user-config.jam'
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=$TOOLSET
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=$TOOLSET
working-directory: ../boost-root/libs/type_traits/test
macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
toolset: [ clang ]
standard: [ "03", 11, 14, 17, 2a ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: Config info install
run: ../../../b2 config_info_travis_install toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }}
working-directory: ../boost-root/libs/config/test
- name: Config info
run: ./config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=${{ matrix.standard }}
working-directory: ../boost-root/libs/type_traits/test
windows_gcc:
runs-on: windows-latest
defaults:
run:
shell: cmd
env:
ARGS: toolset=${{ matrix.toolset }} address-model=64 cxxstd=${{ matrix.standard }}
strategy:
fail-fast: false
matrix:
standard: [ 11, 14, 17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install cxxstd=${{ matrix.standard }} toolset=gcc
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash cxxstd=${{ matrix.standard }} toolset=gcc
working-directory: ../boost-root/libs/type_traits/test
windows_msvc_14_0:
runs-on: windows-2019
defaults:
run:
shell: cmd
strategy:
fail-fast: false
matrix:
standard: [ 14, 17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install cxxstd=${{ matrix.standard }} toolset=msvc-14.0
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash cxxstd=${{ matrix.standard }} toolset=msvc-14.0 define=CI_SUPPRESS_KNOWN_ISSUES
working-directory: ../boost-root/libs/type_traits/test
windows_msvc_14_2:
runs-on: windows-2019
defaults:
run:
shell: cmd
strategy:
fail-fast: false
matrix:
standard: [ 14, 17, latest ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install cxxstd=${{ matrix.standard }} toolset=msvc-14.2
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash cxxstd=${{ matrix.standard }} toolset=msvc-14.2 define=CI_SUPPRESS_KNOWN_ISSUES
working-directory: ../boost-root/libs/type_traits/test
windows_msvc_14_3:
runs-on: windows-2022
defaults:
run:
shell: cmd
strategy:
fail-fast: false
matrix:
standard: [ 14, 17, latest ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install cxxstd=${{ matrix.standard }} toolset=msvc-14.3
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash cxxstd=${{ matrix.standard }} toolset=msvc-14.3 define=CI_SUPPRESS_KNOWN_ISSUES
working-directory: ../boost-root/libs/type_traits/test
windows_msvc_14_2_clr:
runs-on: windows-2019
defaults:
run:
shell: cmd
strategy:
fail-fast: false
matrix:
standard: [ 14, 17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[apple];[Apple];[APPLE];[linux];[Linux];[LINUX]'
commit-filter-separator: ';'
fail-fast: true
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: bootstrap
working-directory: ../boost-root
- name: Generate headers
run: b2 headers
working-directory: ../boost-root
- name: Config info install
run: ..\..\..\b2 config_info_travis_install cxxstd=${{ matrix.standard }} toolset=msvc-14.2 cxxflags=-clr asynch-exceptions=on
working-directory: ../boost-root/libs/config/test
- name: Config info
run: config_info_travis
working-directory: ../boost-root/libs/config/test
- name: Test
run: ..\..\..\b2 --hash cxxstd=${{ matrix.standard }} toolset=msvc-14.2 define=CI_SUPPRESS_KNOWN_ISSUES cxxflags=-clr asynch-exceptions=on
working-directory: ../boost-root/libs/type_traits/test
ubuntu-cuda:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
standard: [ 11, 14, 17 ]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'
- uses: Jimver/cuda-toolkit@v0.2.4
- uses: mstachniuk/ci-skip@v1
with:
commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]'
commit-filter-separator: ';'
fail-fast: true
- name: Add repository
continue-on-error: true
id: addrepo
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo
continue-on-error: true
id: retry1
if: steps.addrepo.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Retry Add Repo 2
continue-on-error: true
id: retry2
if: steps.retry1.outcome=='failure'
run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
- name: Install packages
run: sudo apt install clang-10
- name: Checkout main boost
run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root
- name: Update tools/boostdep
run: git submodule update --init tools/boostdep
working-directory: ../boost-root
- name: Copy files
run: cp -r $GITHUB_WORKSPACE/* libs/type_traits
working-directory: ../boost-root
- name: Install deps
run: python tools/boostdep/depinst/depinst.py type_traits
working-directory: ../boost-root
- name: Bootstrap
run: ./bootstrap.sh
working-directory: ../boost-root
- name: Generate headers
run: ./b2 headers
working-directory: ../boost-root
- name: nvcc version
run: nvcc --version
working-directory: ../boost-root/libs/config/test
- name: Testing nvcc
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cpp" && nvcc -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_VIA_STATIC_ASSERT $file.cpp || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing nvcc+clang
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cpp" && nvcc --compiler-bindir=clang++ -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_VIA_STATIC_ASSERT $file.cpp || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Create .cu files
run: for file in $(cat cuda/cuda_tests.txt); do cp $file.cpp $file.cu; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing nvcc on .cu files
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cu" && nvcc -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_VIA_STATIC_ASSERT $file.cu || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing nvcc+clang on .cu files
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cu" && nvcc --compiler-bindir=clang++ -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_VIA_STATIC_ASSERT $file.cu || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing clang on .cu files
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cu" && clang++ -nocudalib --no-cuda-version-check --cuda-gpu-arch=sm_75 -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_VIA_STATIC_ASSERT $file.cu || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing nvcc on .cu files
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cu" && nvcc -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_CUDA_DEVICE $file.cu || break -1; done
working-directory: ../boost-root/libs/type_traits/test
- name: Testing clang on .cu files
run: for file in $(cat cuda/cuda_tests.txt); do echo "testing $file.cu" && clang++ -nocudalib --no-cuda-version-check --cuda-gpu-arch=sm_75 -std=c++${{ matrix.standard }} -I../../.. -c -DTEST_CUDA_DEVICE $file.cu || break -1; done
working-directory: ../boost-root/libs/type_traits/test

View File

@ -1,459 +0,0 @@
# 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"
os:
- linux
- osx
branches:
only:
- master
- develop
env:
matrix:
- BOGUS_JOB=true
matrix:
exclude:
- env: BOGUS_JOB=true
include:
- os: linux
env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03
addons:
apt:
packages:
- g++-4.7
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11
addons:
apt:
packages:
- g++-4.7
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03
addons:
apt:
packages:
- g++-4.8
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11
addons:
apt:
packages:
- g++-4.8
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03
addons:
apt:
packages:
- g++-4.9
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11
addons:
apt:
packages:
- g++-4.9
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03
addons:
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11
addons:
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14
addons:
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++03
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++11
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++14
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++1z
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
- os: linux
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++03
addons:
apt:
packages:
- clang-3.5
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++11
addons:
apt:
packages:
- clang-3.5
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++03
addons:
apt:
packages:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11
addons:
apt:
packages:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++03
addons:
apt:
packages:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11
addons:
apt:
packages:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++03
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++1z
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++03
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++11
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++14
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: linux
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++1z
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode8.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode8.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode8.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode8.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode8.2
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode8.2
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode8.2
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode8.1
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode8.1
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode8.1
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode8.1
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode8.1
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode8.0
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode8.0
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode8.0
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode8.0
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode7.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode7.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode7.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode7.3
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
osx_image: xcode6.4
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
osx_image: xcode6.4
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
osx_image: xcode6.4
- os: osx
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z
osx_image: xcode6.4
install:
- cd ..
- git clone -b $TRAVIS_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 libs/assert
- git submodule update --init libs/bind
- git submodule update --init libs/core
- git submodule update --init libs/detail
- git submodule update --init libs/function
- git submodule update --init libs/integer
- git submodule update --init libs/move
- git submodule update --init libs/mpl
- git submodule update --init libs/preprocessor
- git submodule update --init libs/static_assert
- git submodule update --init libs/throw_exception
- git submodule update --init libs/type_index
- git submodule update --init libs/utility
- cp -r $TRAVIS_BUILD_DIR/* libs/type_traits
- ./bootstrap.sh
- ./b2 headers
script:
- |-
echo "using $TOOLSET : : $COMPILER : <cxxflags>-std=$CXXSTD ;" > ~/user-config.jam
- (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET && ./config_info_travis)
- ./b2 -j3 libs/type_traits/test toolset=$TOOLSET
notifications:
email:
on_success: always

38
CMakeLists.txt Normal file
View File

@ -0,0 +1,38 @@
# Copyright 2018 Mike Dev
# Copyright 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
if(NOT DEFINED IDF_TARGET)
# We support CMake 3.5, but prefer 3.16 policies and behavior
cmake_minimum_required(VERSION 3.5...3.16)
project(boost_type_traits VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_type_traits INTERFACE)
add_library(Boost::type_traits ALIAS boost_type_traits)
target_include_directories(boost_type_traits INTERFACE include)
target_link_libraries(boost_type_traits
INTERFACE
Boost::config
Boost::static_assert
)
else()
FILE(GLOB_RECURSE headers include/*.h include/*.hpp)
idf_component_register(
SRCS
${headers}
INCLUDE_DIRS
include
REQUIRES
boost_config
boost_static_assert
)
endif()

47
README.md Normal file
View File

@ -0,0 +1,47 @@
Boost TypeTraits Library
============================
The Boost type-traits library contains a set of very specific traits classes, each of which encapsulate a single trait
from the C++ type system; for example, is a type a pointer or a reference type? Or does a type have a trivial constructor, or a const-qualifier?
The type-traits classes share a unified design: each class inherits from the type true_type if the type has the specified property and inherits from false_type otherwise.
The type-traits library also contains a set of classes that perform a specific transformation on a type; for example, they can remove a top-level const or
volatile qualifier from a type. Each class that performs a transformation defines a single typedef-member type that is the result of the transformation.
The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/type_traits/index.html).
| | Master | Develop |
|------------------|----------|-------------|
| Travis | [![Build Status](https://travis-ci.org/boostorg/type_traits.svg?branch=master)](https://travis-ci.org/boostorg/type_traits) | [![Build Status](https://travis-ci.org/boostorg/type_traits.svg)](https://travis-ci.org/boostorg/type_traits) |
| Appveyor | [![Build status](https://ci.appveyor.com/api/projects/status/lwjqu4087qiolje8/branch/master?svg=true)](https://ci.appveyor.com/project/jzmaddock/type-traits/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/lwjqu4087qiolje8/branch/develop?svg=true)](https://ci.appveyor.com/project/jzmaddock/type-traits/branch/develop) |
## Support, bugs and feature requests ##
Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/type_traits/issues)
(see [open issues](https://github.com/boostorg/type_traits/issues) and
[closed issues](https://github.com/boostorg/type_traits/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed)).
You can submit your changes through a [pull request](https://github.com/boostorg/type_traits/pulls).
There is no mailing-list specific to Boost TypeTraits, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [type_traits].
## Development ##
Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
git clone https://github.com/boostorg/boost
cd boost
git submodule update --init
The Boost TypeTraits Library is located in `libs/type_traits/`.
### Running tests ###
First, make sure you are in `libs/type_traits/test`.
You can either run all the tests listed in `Jamfile.v2` or run a single test:
../../../b2 <- run all tests
../../../b2 config_info <- single test

View File

@ -1,74 +0,0 @@
# 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 libs/assert
- git submodule update --init libs/bind
- git submodule update --init libs/core
- git submodule update --init libs/detail
- git submodule update --init libs/function
- git submodule update --init libs/integer
- git submodule update --init libs/move
- git submodule update --init libs/mpl
- git submodule update --init libs/preprocessor
- git submodule update --init libs/static_assert
- git submodule update --init libs/throw_exception
- git submodule update --init libs/type_index
- git submodule update --init libs/utility
- git submodule update --init libs/functional
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\type_traits
- bootstrap
- b2 headers
build: off
test_script:
- cd libs\config\test
- ..\..\..\b2 config_info_travis_install %ARGS%
- config_info_travis
- cd ..\..\type_traits\test
- ..\..\..\b2 -j3 %ARGS% define=CI_SUPPRESS_KNOWN_ISSUES

36
doc/conjunction.qbk Normal file
View File

@ -0,0 +1,36 @@
[/
Copyright 2020 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:conjunction conjunction]
template<class... T>
struct conjunction;
__inherit Inherits from the first type `U` in the list for which
`bool(U::value)` is `false`, or the last type in the list if there is no such
type. If `sizeof...(T)` is `0` then inherits from `__true_type`.
__header `#include <boost/type_traits/conjunction.hpp>`
[all_compilers] In the absence of variadic-template support, `conjunction` has
only 2 parameters.
__examples
[:Given: `template<int N> struct Int { static const int value = N };` ]
[:`conjunction<>` inherits from `__true_type`.]
[:`conjunction<Int<1> >` inherits from `Int<1>`.]
[:`conjunction<Int<1>, Int<2>, Int<3> >` inherits from `Int<3>`.]
[:`conjunction<Int<1>, Int<0>, Int<3> >` inherits from `Int<0>`.]
[endsect]

65
doc/copy_cv_ref.qbk Normal file
View File

@ -0,0 +1,65 @@
[/
Copyright 2019 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:copy_cv_ref copy_cv_ref]
template<class T, class U>
struct copy_cv_ref
{
typedef __below type;
};
template<class T, class U>
using copy_cv_ref_t = typename copy_cv_ref<T, U>::type;
__type [^T /cvref/], where /cvref/ are the cvref-qualifiers of `U`.
__header `#include <boost/type_traits/copy_cv_ref.hpp>` or
`#include <boost/type_traits.hpp>>`
[table Examples
[[Expression] [Result Type]]
[[`copy_cv_ref<int, const char>::type`][`const int`]]
[[`copy_cv_ref<int, volatile char>::type`][`volatile int`]]
[[`copy_cv_ref<int, const volatile char>::type`][`const volatile int`]]
[[`copy_cv_ref<int, char&>::type`][`int&`]]
[[`copy_cv_ref<int, const char&>::type`][`const int&`]]
[[`copy_cv_ref<int, volatile char&>::type`][`volatile int&`]]
[[`copy_cv_ref<int, const volatile char&>::type`][`const volatile int&`]]
[[`copy_cv_ref<int, char&&>::type`][`int&&`]]
[[`copy_cv_ref<int, const char&&>::type`][`const int&&`]]
[[`copy_cv_ref<int, volatile char&&>::type`][`volatile int&&`]]
[[`copy_cv_ref<int, const volatile char&&>::type`][`const volatile int&&`]]
[[`copy_cv_ref<int&&, char&>::type`][`int&`]]
[[`copy_cv_ref<int&, const char>::type`][`int&`]]
[[`copy_cv_ref<int&, volatile char&>::type`][`int&`]]
[[`copy_cv_ref<int&, const volatile char&&>::type`][`int&`]]
]
[all_compilers] The type alias `copy_cv_ref_t` is only available if the compiler
supports template aliases.
[endsect]

53
doc/copy_reference.qbk Normal file
View File

@ -0,0 +1,53 @@
[/
Copyright 2019 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:copy_reference copy_reference_]
template<class T, class U>
struct copy_reference
{
typedef __below type;
};
template<class T, class U>
using copy_reference_t = typename copy_reference<T, U>::type;
__type [^T /ref/], where /ref/ are the ref-qualifiers of `U`.
__header `#include <boost/type_traits/copy_reference.hpp>` or
`#include <boost/type_traits.hpp>>`
[table Examples
[[Expression] [Result Type]]
[[`copy_reference<int, char>::type`][`int`]]
[[`copy_reference<int, char&>::type`] [`int&`]]
[[`copy_reference<int, char&&>::type`] [`int&&`]]
[[`copy_reference<int&, char>::type`] [`int&`]]
[[`copy_reference<int&, char&>::type`] [`int&`]]
[[`copy_reference<int&, char&&>::type`] [`int&`]]
[[`copy_reference<int&&, char>::type`] [`int&&`]]
[[`copy_reference<int&&, char&>::type`] [`int&`]]
[[`copy_reference<int&&, char&&>::type`] [`int&&`]]
]
[all_compilers] The type alias `copy_reference_t` is only available if the compiler
supports template aliases.
[endsect]

View File

@ -18,8 +18,8 @@ current maintainer of the library.
This version of type traits library is based on contributions by
Adobe Systems Inc, David Abrahams, Steve Cleary,
Beman Dawes, Aleksey Gurtovoy, Howard Hinnant, Jesse Jones, Mat Marcus,
Itay Maman, John Maddock, Thorsten Ottosen, Robert Ramey, Jeremy Siek
and Antony Polukhin.
Itay Maman, John Maddock, Thorsten Ottosen, Robert Ramey, Jeremy Siek,
Antony Polukhin and Glen Fernandes.
Mat Marcus and Jesse Jones invented, and
[@http://opensource.adobe.com/project4/project.shtml published a paper describing],

View File

@ -17,7 +17,7 @@
__type Let `U` be the result of `remove_reference<T>::type`, then if `U` is
an array type, the result is `remove_extent<U>::type*`, otherwise if `U` is a
function type then the result is `U*`, otherwise the result is `U`.
function type then the result is `U*`, otherwise the result is `remove_cv<U>::type`.
__std_ref 3.9.1.

40
doc/detected.qbk Normal file
View File

@ -0,0 +1,40 @@
[/
Copyright 2018 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:detected detected]
template<template<class...> class Op, class... Args>
using detected_t = __below;
__alias `Op<Args...>` if it is a valid template-id, otherwise
`boost::nonesuch`.
__std_paper [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf N4502]
__compat Requires C++11 variadic templates and C++11 template aliases.
__header `#include <boost/type_traits/detected.hpp>`
__examples
Suppose you wish to determine whether a type has a `size()` const-member function, then given the meta-functions:
template <class T>
using size_member_tester = decltype(std::declval<const T&>().size());
template <class T>
using size_member_t = boost::detected_t<size_member_tester, T >;
Then the type `size_member_t<T>` is an alias for `size_member_tester<T>` if the operation is valid, and an alias for
`boost::nonesuch` otherwise.
See also: __is_detected, __is_detected_convertible, __is_detected_exact.
[endsect]

45
doc/detected_or.qbk Normal file
View File

@ -0,0 +1,45 @@
[/
Copyright 2018 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:detected_or detected_or]
template<class Default, template<class...> class Op, class... Args>
using detected_or = __below;
template<class Default, template<class...> class Op, class... Args>
using detected_or_t = typename detected_or<Default, Op, Args...>::type;
__alias An unspecified type with two public member type definitions:
* `value_t` is __true_type if `Op<Args...>` is a valid template-id, otherwise
__false_type
* `type` is `Op<Args...>` if it is a valid template-id, otherwise `Default`
__std_paper [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf N4502]
__compat Requires C++11 variadic templates and C++11 template aliases.
__header `#include <boost/type_traits/detected_or.hpp>`
__examples
Suppose we wish to declare a type that represents the difference between two values of type T, it should be
T::difference_type if such a type exists, or std::ptrdiff_t otherwise:
template<class T>
using difference_t = typename T::difference_type;
template<class T>
using difference_type = boost::detected_or_t<std::ptrdiff_t, difference_t, T>;
Now the type `difference_type<T>` gives us what we need.
See also: __is_detected, __is_detected_convertible, __is_detected_exact.
[endsect]

36
doc/disjunction.qbk Normal file
View File

@ -0,0 +1,36 @@
[/
Copyright 2020 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:disjunction disjunction]
template<class... T>
struct disjunction;
__inherit Inherits from the first type `U` in the list for which
`bool(U::value)` is `true`, or the last type in the list if there is no such
type. If `sizeof...(T)` is `0` then inherits from `__false_type`.
__header `#include <boost/type_traits/disjunction.hpp>`
[all_compilers] In the absence of variadic-template support, `disjunction` has
only 2 parameters.
__examples
[:Given: `template<int N> struct Int { static const int value = N };` ]
[:`disjunction<>` inherits from `__false_type`.]
[:`disjunction<Int<1> >` inherits from `Int<1>`.]
[:`disjunction<Int<1>, Int<2>, Int<3> >` inherits from `Int<1>`.]
[:`disjunction<Int<0>, Int<2>, Int<3> >` inherits from `Int<2>`.]
[endsect]

48
doc/enable_if.qbk Normal file
View File

@ -0,0 +1,48 @@
[/
Copyright 2018 Glen Joseph Fernandes
(glenjofe@gmail.com)
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).
]
[section:enable_if enable_if_]
template<bool B, class T = void>
struct enable_if_;
template<bool B, class T = void>
using enable_if_t = typename enable_if_<B, T>::type;
__type If `B` is true, then the member `type` is defined to be `T`. Otherwise
there is no member `type`.
__header `#include <boost/type_traits/enable_if.hpp>`
[note The trait has the name `enable_if_` (with a trailing underscore) but
behaves like `std::enable_if` or `boost::enable_if_c`. The existing trait
with the name `boost::enable_if` has a different interface.]
__examples
The following function can be used to destroy each element of an array and
specially handle arrays of trivially destructible types.
template<class T>
typename boost::enable_if_<!boost::has_trivial_destructor<T>::value>::type
destroy(T* ptr, std::size_t size)
{
while (size > 0) {
ptr[--size].~T();
}
}
template<class T>
typename boost::enable_if_<boost::has_trivial_destructor<T>::value>::type
destroy(T*, std::size_t) { }
[all_compilers] The type alias `enable_if_t` is only available if the compiler
supports template aliases.
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[has_binary_operator_compat]
[*Known issues:]
* This trait cannot detect whether binary `operator&` is public or not:
if `operator&` is defined as a private member of `Lhs` then
instantiating `has_bit_and<Lhs>` will produce a compiler error.
For this reason `has_bit_and` cannot be used to determine whether a type has a public `operator&` or not.
``
struct A { private: void operator&(const A&); };
boost::has_bit_and<A>::value; // error: A::operator&(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator&(const A&, const A&);
struct B { operator A(); };
boost::has_bit_and<A>::value; // this is fine
boost::has_bit_and<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator&` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_and.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator&(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_and< contains< good > >::value<<'\n'; // true
contains<good> g;
g&g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_and< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b&b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_and..&..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator&=` is public or not:
if `operator&=` is defined as a private member of `Lhs` then
instantiating `has_bit_and_assign<Lhs>` will produce a compiler error.
For this reason `has_bit_and_assign` cannot be used to determine whether a type has a public `operator&=` or not.
``
struct A { private: void operator&=(const A&); };
boost::has_bit_and_assign<A>::value; // error: A::operator&=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator&=(const A&, const A&);
struct B { operator A(); };
boost::has_bit_and_assign<A>::value; // this is fine
boost::has_bit_and_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator&=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_and_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator&=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_and_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g&=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_and_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b&=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_and_assign..&=..A&..contains<T>&..[/Nothing]]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator|` is public or not:
if `operator|` is defined as a private member of `Lhs` then
instantiating `has_bit_or<Lhs>` will produce a compiler error.
For this reason `has_bit_or` cannot be used to determine whether a type has a public `operator|` or not.
``
struct A { private: void operator|(const A&); };
boost::has_bit_or<A>::value; // error: A::operator|(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator|(const A&, const A&);
struct B { operator A(); };
boost::has_bit_or<A>::value; // this is fine
boost::has_bit_or<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator|` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_or.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator|(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_or< contains< good > >::value<<'\n'; // true
contains<good> g;
g|g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_or< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b|b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_or..|..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator|=` is public or not:
if `operator|=` is defined as a private member of `Lhs` then
instantiating `has_bit_or_assign<Lhs>` will produce a compiler error.
For this reason `has_bit_or_assign` cannot be used to determine whether a type has a public `operator|=` or not.
``
struct A { private: void operator|=(const A&); };
boost::has_bit_or_assign<A>::value; // error: A::operator|=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator|=(const A&, const A&);
struct B { operator A(); };
boost::has_bit_or_assign<A>::value; // this is fine
boost::has_bit_or_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator|=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_or_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator|=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_or_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g|=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_or_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b|=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_or_assign..|=..A&..contains<T>&..[/Nothing]]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator^` is public or not:
if `operator^` is defined as a private member of `Lhs` then
instantiating `has_bit_xor<Lhs>` will produce a compiler error.
For this reason `has_bit_xor` cannot be used to determine whether a type has a public `operator^` or not.
``
struct A { private: void operator^(const A&); };
boost::has_bit_xor<A>::value; // error: A::operator^(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator^(const A&, const A&);
struct B { operator A(); };
boost::has_bit_xor<A>::value; // this is fine
boost::has_bit_xor<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator^` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_xor.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator^(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_xor< contains< good > >::value<<'\n'; // true
contains<good> g;
g^g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_xor< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b^b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_xor..^..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator^=` is public or not:
if `operator^=` is defined as a private member of `Lhs` then
instantiating `has_bit_xor_assign<Lhs>` will produce a compiler error.
For this reason `has_bit_xor_assign` cannot be used to determine whether a type has a public `operator^=` or not.
``
struct A { private: void operator^=(const A&); };
boost::has_bit_xor_assign<A>::value; // error: A::operator^=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator^=(const A&, const A&);
struct B { operator A(); };
boost::has_bit_xor_assign<A>::value; // this is fine
boost::has_bit_xor_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator^=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_bit_xor_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator^=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_bit_xor_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g^=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_bit_xor_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b^=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_bit_xor_assign..^=..A&..contains<T>&..[/Nothing]]
[endsect]

View File

@ -105,5 +105,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_complement..~]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator/` is public or not:
if `operator/` is defined as a private member of `Lhs` then
instantiating `has_divides<Lhs>` will produce a compiler error.
For this reason `has_divides` cannot be used to determine whether a type has a public `operator/` or not.
``
struct A { private: void operator/(const A&); };
boost::has_divides<A>::value; // error: A::operator/(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator/(const A&, const A&);
struct B { operator A(); };
boost::has_divides<A>::value; // this is fine
boost::has_divides<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator/` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_divides.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator/(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_divides< contains< good > >::value<<'\n'; // true
contains<good> g;
g/g; // ok
// does not work for contains<bad>
std::cout<<boost::has_divides< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b/b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_divides../..A..contains<T>..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator/=` is public or not:
if `operator/=` is defined as a private member of `Lhs` then
instantiating `has_divides_assign<Lhs>` will produce a compiler error.
For this reason `has_divides_assign` cannot be used to determine whether a type has a public `operator/=` or not.
``
struct A { private: void operator/=(const A&); };
boost::has_divides_assign<A>::value; // error: A::operator/=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator/=(const A&, const A&);
struct B { operator A(); };
boost::has_divides_assign<A>::value; // this is fine
boost::has_divides_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator/=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_divides_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator/=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_divides_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g/=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_divides_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b/=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_divides_assign../=..A&..contains<T>&..[/Nothing]]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator==` is public or not:
if `operator==` is defined as a private member of `Lhs` then
instantiating `has_equal_to<Lhs>` will produce a compiler error.
For this reason `has_equal_to` cannot be used to determine whether a type has a public `operator==` or not.
``
struct A { private: void operator==(const A&); };
boost::has_equal_to<A>::value; // error: A::operator==(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator==(const A&, const A&);
struct B { operator A(); };
boost::has_equal_to<A>::value; // this is fine
boost::has_equal_to<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator==` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_equal_to.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator==(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_equal_to< contains< good > >::value<<'\n'; // true
contains<good> g;
g==g; // ok
// does not work for contains<bad>
std::cout<<boost::has_equal_to< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b==b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_equal_to..==..bool..bool..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator>` is public or not:
if `operator>` is defined as a private member of `Lhs` then
instantiating `has_greater<Lhs>` will produce a compiler error.
For this reason `has_greater` cannot be used to determine whether a type has a public `operator>` or not.
``
struct A { private: void operator>(const A&); };
boost::has_greater<A>::value; // error: A::operator>(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator>(const A&, const A&);
struct B { operator A(); };
boost::has_greater<A>::value; // this is fine
boost::has_greater<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator>` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_greater.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator>(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_greater< contains< good > >::value<<'\n'; // true
contains<good> g;
g>g; // ok
// does not work for contains<bad>
std::cout<<boost::has_greater< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b>b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_greater..>..bool..bool..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator>=` is public or not:
if `operator>=` is defined as a private member of `Lhs` then
instantiating `has_greater_equal<Lhs>` will produce a compiler error.
For this reason `has_greater_equal` cannot be used to determine whether a type has a public `operator>=` or not.
``
struct A { private: void operator>=(const A&); };
boost::has_greater_equal<A>::value; // error: A::operator>=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator>=(const A&, const A&);
struct B { operator A(); };
boost::has_greater_equal<A>::value; // this is fine
boost::has_greater_equal<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator>=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_greater_equal.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator>=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_greater_equal< contains< good > >::value<<'\n'; // true
contains<good> g;
g>=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_greater_equal< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b>=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_greater_equal..>=..bool..bool..const ]
[endsect]

View File

@ -49,62 +49,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator<<` is public or not:
if `operator<<` is defined as a private member of `Lhs` then
instantiating `has_left_shift<Lhs>` will produce a compiler error.
For this reason `has_left_shift` cannot be used to determine whether a type has a public `operator<<` or not.
``
struct A { private: void operator<<(const A&); };
boost::has_left_shift<A>::value; // error: A::operator<<(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator<<(const A&, const A&);
struct B { operator A(); };
boost::has_left_shift<A>::value; // this is fine
boost::has_left_shift<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator<<` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_left_shift.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator<<(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_left_shift< contains< good > >::value<<'\n'; // true
contains<good> g;
g<<g; // ok
// does not work for contains<bad>
std::cout<<boost::has_left_shift< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b<<b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_left_shift..<<..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator<<=` is public or not:
if `operator<<=` is defined as a private member of `Lhs` then
instantiating `has_left_shift_assign<Lhs>` will produce a compiler error.
For this reason `has_left_shift_assign` cannot be used to determine whether a type has a public `operator<<=` or not.
``
struct A { private: void operator<<=(const A&); };
boost::has_left_shift_assign<A>::value; // error: A::operator<<=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator<<=(const A&, const A&);
struct B { operator A(); };
boost::has_left_shift_assign<A>::value; // this is fine
boost::has_left_shift_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator<<=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_left_shift_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator<<=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_left_shift_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g<<=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_left_shift_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b<<=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_left_shift_assign..<<=..A&..contains<T>&..[/]]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator<` is public or not:
if `operator<` is defined as a private member of `Lhs` then
instantiating `has_less<Lhs>` will produce a compiler error.
For this reason `has_less` cannot be used to determine whether a type has a public `operator<` or not.
``
struct A { private: void operator<(const A&); };
boost::has_less<A>::value; // error: A::operator<(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator<(const A&, const A&);
struct B { operator A(); };
boost::has_less<A>::value; // this is fine
boost::has_less<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator<` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_less.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator<(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_less< contains< good > >::value<<'\n'; // true
contains<good> g;
g<g; // ok
// does not work for contains<bad>
std::cout<<boost::has_less< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b<b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_less..<..bool..bool..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator<=` is public or not:
if `operator<=` is defined as a private member of `Lhs` then
instantiating `has_less_equal<Lhs>` will produce a compiler error.
For this reason `has_less_equal` cannot be used to determine whether a type has a public `operator<=` or not.
``
struct A { private: void operator<=(const A&); };
boost::has_less_equal<A>::value; // error: A::operator<=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator<=(const A&, const A&);
struct B { operator A(); };
boost::has_less_equal<A>::value; // this is fine
boost::has_less_equal<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator<=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_less_equal.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator<=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_less_equal< contains< good > >::value<<'\n'; // true
contains<good> g;
g<=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_less_equal< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b<=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_less_equal..<=..bool..bool..const ]
[endsect]

View File

@ -46,63 +46,8 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[binary_operator_known_issues has_logical_and..&&..bool..bool..const ]
[*Known issues:]
* This trait cannot detect whether binary `operator&&` is public or not:
if `operator&&` is defined as a private member of `Lhs` then
instantiating `has_logical_and<Lhs>` will produce a compiler error.
For this reason `has_logical_and` cannot be used to determine whether a type has a public `operator&&` or not.
``
struct A { private: void operator&&(const A&); };
boost::has_logical_and<A>::value; // error: A::operator&&(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator&&(const A&, const A&);
struct B { operator A(); };
boost::has_logical_and<A>::value; // this is fine
boost::has_logical_and<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator&&` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_logical_and.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator&&(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_logical_and< contains< good > >::value<<'\n'; // true
contains<good> g;
g&&g; // ok
// does not work for contains<bad>
std::cout<<boost::has_logical_and< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b&&b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[endsect]

View File

@ -47,62 +47,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator||` is public or not:
if `operator||` is defined as a private member of `Lhs` then
instantiating `has_logical_or<Lhs>` will produce a compiler error.
For this reason `has_logical_or` cannot be used to determine whether a type has a public `operator||` or not.
``
struct A { private: void operator||(const A&); };
boost::has_logical_or<A>::value; // error: A::operator||(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator||(const A&, const A&);
struct B { operator A(); };
boost::has_logical_or<A>::value; // this is fine
boost::has_logical_or<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator||` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_logical_or.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator||(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_logical_or< contains< good > >::value<<'\n'; // true
contains<good> g;
g||g; // ok
// does not work for contains<bad>
std::cout<<boost::has_logical_or< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b||b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_logical_or..||..bool..bool..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator-` is public or not:
if `operator-` is defined as a private member of `Lhs` then
instantiating `has_minus<Lhs>` will produce a compiler error.
For this reason `has_minus` cannot be used to determine whether a type has a public `operator-` or not.
``
struct A { private: void operator-(const A&); };
boost::has_minus<A>::value; // error: A::operator-(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator-(const A&, const A&);
struct B { operator A(); };
boost::has_minus<A>::value; // this is fine
boost::has_minus<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator-` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_minus.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator-(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_minus< contains< good > >::value<<'\n'; // true
contains<good> g;
g-g; // ok
// does not work for contains<bad>
std::cout<<boost::has_minus< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b-b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_minus..-..A..contains<T>..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator-=` is public or not:
if `operator-=` is defined as a private member of `Lhs` then
instantiating `has_minus_assign<Lhs>` will produce a compiler error.
For this reason `has_minus_assign` cannot be used to determine whether a type has a public `operator-=` or not.
``
struct A { private: void operator-=(const A&); };
boost::has_minus_assign<A>::value; // error: A::operator-=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator-=(const A&, const A&);
struct B { operator A(); };
boost::has_minus_assign<A>::value; // this is fine
boost::has_minus_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator-=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_minus_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator-=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_minus_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g-=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_minus_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b-=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_minus_assign..-=..A&..contains<T>&..[/]]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator%` is public or not:
if `operator%` is defined as a private member of `Lhs` then
instantiating `has_modulus<Lhs>` will produce a compiler error.
For this reason `has_modulus` cannot be used to determine whether a type has a public `operator%` or not.
``
struct A { private: void operator%(const A&); };
boost::has_modulus<A>::value; // error: A::operator%(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator%(const A&, const A&);
struct B { operator A(); };
boost::has_modulus<A>::value; // this is fine
boost::has_modulus<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator%` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_modulus.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator%(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_modulus< contains< good > >::value<<'\n'; // true
contains<good> g;
g%g; // ok
// does not work for contains<bad>
std::cout<<boost::has_modulus< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b%b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_modulus..%..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator%=` is public or not:
if `operator%=` is defined as a private member of `Lhs` then
instantiating `has_modulus_assign<Lhs>` will produce a compiler error.
For this reason `has_modulus_assign` cannot be used to determine whether a type has a public `operator%=` or not.
``
struct A { private: void operator%=(const A&); };
boost::has_modulus_assign<A>::value; // error: A::operator%=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator%=(const A&, const A&);
struct B { operator A(); };
boost::has_modulus_assign<A>::value; // this is fine
boost::has_modulus_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator%=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_modulus_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator%=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_modulus_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g%=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_modulus_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b%=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_modulus_assign..%=..A&..contains<T>&..[/]]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator*` is public or not:
if `operator*` is defined as a private member of `Lhs` then
instantiating `has_multiplies<Lhs>` will produce a compiler error.
For this reason `has_multiplies` cannot be used to determine whether a type has a public `operator*` or not.
``
struct A { private: void operator*(const A&); };
boost::has_multiplies<A>::value; // error: A::operator*(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator*(const A&, const A&);
struct B { operator A(); };
boost::has_multiplies<A>::value; // this is fine
boost::has_multiplies<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator*` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_multiplies.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator*(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_multiplies< contains< good > >::value<<'\n'; // true
contains<good> g;
g*g; // ok
// does not work for contains<bad>
std::cout<<boost::has_multiplies< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b*b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_multiplies..*..A..contains<T>..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator*=` is public or not:
if `operator*=` is defined as a private member of `Lhs` then
instantiating `has_multiplies_assign<Lhs>` will produce a compiler error.
For this reason `has_multiplies_assign` cannot be used to determine whether a type has a public `operator*=` or not.
``
struct A { private: void operator*=(const A&); };
boost::has_multiplies_assign<A>::value; // error: A::operator*=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator*=(const A&, const A&);
struct B { operator A(); };
boost::has_multiplies_assign<A>::value; // this is fine
boost::has_multiplies_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator*=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_multiplies_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator*=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_multiplies_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g*=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_multiplies_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b*=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_multiplies_assign..*=..A&..contains<T>&..[/]]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator!=` is public or not:
if `operator!=` is defined as a private member of `Lhs` then
instantiating `has_not_equal_to<Lhs>` will produce a compiler error.
For this reason `has_not_equal_to` cannot be used to determine whether a type has a public `operator!=` or not.
``
struct A { private: void operator!=(const A&); };
boost::has_not_equal_to<A>::value; // error: A::operator!=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator!=(const A&, const A&);
struct B { operator A(); };
boost::has_not_equal_to<A>::value; // this is fine
boost::has_not_equal_to<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator!=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_not_equal_to.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator!=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_not_equal_to< contains< good > >::value<<'\n'; // true
contains<good> g;
g!=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_not_equal_to< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b!=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_not_equal_to..!=..bool..bool..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator+` is public or not:
if `operator+` is defined as a private member of `Lhs` then
instantiating `has_plus<Lhs>` will produce a compiler error.
For this reason `has_plus` cannot be used to determine whether a type has a public `operator+` or not.
``
struct A { private: void operator+(const A&); };
boost::has_plus<A>::value; // error: A::operator+(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator+(const A&, const A&);
struct B { operator A(); };
boost::has_plus<A>::value; // this is fine
boost::has_plus<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator+` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_plus.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator+(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_plus< contains< good > >::value<<'\n'; // true
contains<good> g;
g+g; // ok
// does not work for contains<bad>
std::cout<<boost::has_plus< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b+b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_plus..+..A..contains<T>..const ]
[endsect]

View File

@ -48,62 +48,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator+=` is public or not:
if `operator+=` is defined as a private member of `Lhs` then
instantiating `has_plus_assign<Lhs>` will produce a compiler error.
For this reason `has_plus_assign` cannot be used to determine whether a type has a public `operator+=` or not.
``
struct A { private: void operator+=(const A&); };
boost::has_plus_assign<A>::value; // error: A::operator+=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator+=(const A&, const A&);
struct B { operator A(); };
boost::has_plus_assign<A>::value; // this is fine
boost::has_plus_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator+=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_plus_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator+=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_plus_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g+=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_plus_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b+=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_plus_assign..+=..A&..contains<T>&..const ]
[endsect]

View File

@ -106,5 +106,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_post_decrement..--]
[endsect]

View File

@ -106,5 +106,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_post_increment..++]
[endsect]

View File

@ -1,4 +1,4 @@
[/
#[/
(C) Copyright 2009-2011 Frederic Bron.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
@ -106,5 +106,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_pre_decrement..--]
[endsect]

View File

@ -106,5 +106,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_pre_increment..++]
[endsect]

View File

@ -49,62 +49,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator>>` is public or not:
if `operator>>` is defined as a private member of `Lhs` then
instantiating `has_right_shift<Lhs>` will produce a compiler error.
For this reason `has_right_shift` cannot be used to determine whether a type has a public `operator>>` or not.
``
struct A { private: void operator>>(const A&); };
boost::has_right_shift<A>::value; // error: A::operator>>(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator>>(const A&, const A&);
struct B { operator A(); };
boost::has_right_shift<A>::value; // this is fine
boost::has_right_shift<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator>>` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_right_shift.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator>>(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_right_shift< contains< good > >::value<<'\n'; // true
contains<good> g;
g>>g; // ok
// does not work for contains<bad>
std::cout<<boost::has_right_shift< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b>>b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_right_shift..>>..A..contains<T>..const ]
[endsect]

View File

@ -46,62 +46,7 @@ __examples
[*See also:] [link boost_typetraits.category.value_traits.operators Operator Type Traits]
[*Known issues:]
* This trait cannot detect whether binary `operator>>=` is public or not:
if `operator>>=` is defined as a private member of `Lhs` then
instantiating `has_right_shift_assign<Lhs>` will produce a compiler error.
For this reason `has_right_shift_assign` cannot be used to determine whether a type has a public `operator>>=` or not.
``
struct A { private: void operator>>=(const A&); };
boost::has_right_shift_assign<A>::value; // error: A::operator>>=(const A&) is private
``
* There is an issue if the operator exists only for type `A` and `B` is
convertible to `A`. In this case, the compiler will report an ambiguous overload.
``
struct A { };
void operator>>=(const A&, const A&);
struct B { operator A(); };
boost::has_right_shift_assign<A>::value; // this is fine
boost::has_right_shift_assign<B>::value; // error: ambiguous overload
``
* There is an issue when applying this trait to template classes.
If `operator>>=` is defined but does not bind for a given template type,
it is still detected by the trait which returns `true` instead of `false`.
Example:
``
#include <boost/type_traits/has_right_shift_assign.hpp>
#include <iostream>
template <class T>
struct contains { T data; };
template <class T>
bool operator>>=(const contains<T> &lhs, const contains<T> &rhs) {
return f(lhs.data, rhs.data);
}
class bad { };
class good { };
bool f(const good&, const good&) { }
int main() {
std::cout<<std::boolalpha;
// works fine for contains<good>
std::cout<<boost::has_right_shift_assign< contains< good > >::value<<'\n'; // true
contains<good> g;
g>>=g; // ok
// does not work for contains<bad>
std::cout<<boost::has_right_shift_assign< contains< bad > >::value<<'\n'; // true, should be false
contains<bad> b;
b>>=b; // compile time error
return 0;
}
``
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[binary_operator_known_issues has_right_shift_assign..>>=..A&..contains<T>&..[/]]
[endsect]

View File

@ -104,5 +104,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_unary_minus..-]
[endsect]

View File

@ -104,5 +104,7 @@ int main() {
* `volatile` qualifier is not properly handled and would lead to undefined behavior
[prefix_operator_known_issues has_unary_plus..+]
[endsect]

View File

@ -7,6 +7,28 @@
[section:history History]
[h4 Boost-1.70.0]
* Added new traits __is_bounded_array, __is_unbounded_array, __copy_reference, __copy_cv_ref.
[h4 Boost-1.68.0]
* Added support for detecting trivial moves on clang.
* Correct some mismatched `#pragam warning push/pop`.
* Improve __is_virtual_base_of to give more robust answers.
* Add support for __is_final with msvc.
[h4 Boost 1.67.0]
* Added new traits __detected, __detected_or, __is_detected, __is_detected_convertible, __is_detected_exact, __is_complete.
* Added greatly improved code for detecting binary operators.
* Add assertions for completeness to traits which require complete types as arguments: this prevents various traits from giving eroneous results from incomplete types.
* Fix minor issue with mpl compatibility, see [@https://svn.boost.org/trac/boost/ticket/12212 #12212].
* Add macro to indicate when is_constructible is fully implemented, see [@https://svn.boost.org/trac/boost/ticket/12003 #12003].
* Update __is_function and __is_member_function_pointer to work correctly with C++17 noexcept specifications.
* Add workaround for __is_default_constructible and `std::pair`.
* Added fallback for __is_nothrow_swappable on pre-C++11 compilers.
[h4 Boost 1.64.0]
* Added new trait __make_void.
@ -16,7 +38,7 @@
* Refactored traits to depend only on Boost.Config. Greatly simplified code to improve readability and remove workarounds for old compilers no longer supported.
* Fix __decay to follow C++11 semantics, see [@https://svn.boost.org/trac/boost/ticket/7760 #7760].
* Added a number of new traits __is_assignable, __is_default_constructible, __is_constructible and __is_destructible required to fix bugs in a number of other traits,
see for example [@https://svn.boost.org/trac/boost/ticket/7760 #11324].
see for example [@https://svn.boost.org/trac/boost/ticket/11324 #11324].
[h4 Boost 1.58.0]

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Background and Tutorial</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="intro.html" title="Introduction">
<link rel="next" href="category.html" title="Type Traits by Category">
</head>
@ -283,7 +283,7 @@
</li>
</ul></div>
<div class="table">
<a name="boost_typetraits.background.time_taken_to_copy_1000_elements_using__copy_const_t___t_____times_in_micro_seconds_"></a><p class="title"><b>Table&#160;1.1.&#160;Time taken to copy 1000 elements using `copy&lt;const T*, T*&gt;` (times
<a name="boost_typetraits.background.time_taken_to_copy_1000_elements_using__copy_const_t___t_____times_in_micro_seconds_"></a><p class="title"><b>Table 1.1. Time taken to copy 1000 elements using `copy&lt;const T*, T*&gt;` (times
in micro-seconds)</b></p>
<div class="table-contents"><table class="table" summary="Time taken to copy 1000 elements using `copy&lt;const T*, T*&gt;` (times
in micro-seconds)">
@ -420,7 +420,7 @@
to hold non-reference types, references, and constant references:
</p>
<div class="table">
<a name="boost_typetraits.background.required_constructor_argument_types"></a><p class="title"><b>Table&#160;1.2.&#160;Required Constructor Argument Types</b></p>
<a name="boost_typetraits.background.required_constructor_argument_types"></a><p class="title"><b>Table 1.2. Required Constructor Argument Types</b></p>
<div class="table-contents"><table class="table" summary="Required Constructor Argument Types">
<colgroup>
<col>
@ -485,7 +485,7 @@
adds a reference to its type, unless it is already a reference.
</p>
<div class="table">
<a name="boost_typetraits.background.using_add_reference_to_synthesize_the_correct_constructor_type"></a><p class="title"><b>Table&#160;1.3.&#160;Using add_reference to synthesize the correct constructor type</b></p>
<a name="boost_typetraits.background.using_add_reference_to_synthesize_the_correct_constructor_type"></a><p class="title"><b>Table 1.3. Using add_reference to synthesize the correct constructor type</b></p>
<div class="table-contents"><table class="table" summary="Using add_reference to synthesize the correct constructor type">
<colgroup>
<col>
@ -673,11 +673,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Type Traits by Category</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="background.html" title="Background and Tutorial">
<link rel="next" href="category/value_traits.html" title="Type Traits that Describe the Properties of a Type">
</head>
@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_typetraits.category"></a><a class="link" href="category.html" title="Type Traits by Category">Type Traits by Category</a>
</h2></div></div></div>
<div class="toc"><dl>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="category/value_traits.html">Type Traits that
Describe the Properties of a Type</a></span></dt>
<dd><dl>
@ -49,11 +49,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Synthesizing Types with Specific Alignments</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../category.html" title="Type Traits by Category">
<link rel="prev" href="transform.html" title="Type Traits that Transform One Type to Another">
<link rel="next" href="function.html" title="Decomposing Function Types">
@ -45,11 +45,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Decomposing Function Types</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../category.html" title="Type Traits by Category">
<link rel="prev" href="alignment.html" title="Synthesizing Types with Specific Alignments">
<link rel="next" href="../user_defined.html" title="User Defined Specializations">
@ -42,11 +42,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Type Traits that Transform One Type to Another</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../category.html" title="Type Traits by Category">
<link rel="prev" href="value_traits/operators.html" title="Operator Type Traits">
<link rel="next" href="alignment.html" title="Synthesizing Types with Specific Alignments">
@ -111,11 +111,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Type Traits that Describe the Properties of a Type</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../category.html" title="Type Traits by Category">
<link rel="prev" href="../category.html" title="Type Traits by Category">
<link rel="next" href="value_traits/primary.html" title="Categorizing a Type">
@ -27,7 +27,7 @@
<a name="boost_typetraits.category.value_traits"></a><a class="link" href="value_traits.html" title="Type Traits that Describe the Properties of a Type">Type Traits that
Describe the Properties of a Type</a>
</h3></div></div></div>
<div class="toc"><dl>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="value_traits/primary.html">Categorizing
a Type</a></span></dt>
<dt><span class="section"><a href="value_traits/properties.html">General
@ -50,11 +50,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Operator Type Traits</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
<link rel="prev" href="relate.html" title="Relationships Between Two Types">
<link rel="next" href="../transform.html" title="Type Traits that Transform One Type to Another">
@ -204,7 +204,7 @@
operators.
</p>
<div class="table">
<a name="boost_typetraits.category.value_traits.operators.supported_prefix_operators"></a><p class="title"><b>Table&#160;1.4.&#160;Supported prefix operators</b></p>
<a name="boost_typetraits.category.value_traits.operators.supported_prefix_operators"></a><p class="title"><b>Table 1.4. Supported prefix operators</b></p>
<div class="table-contents"><table class="table" summary="Supported prefix operators">
<colgroup>
<col>
@ -315,7 +315,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_typetraits.category.value_traits.operators.supported_postfix_operators"></a><p class="title"><b>Table&#160;1.5.&#160;Supported postfix operators</b></p>
<a name="boost_typetraits.category.value_traits.operators.supported_postfix_operators"></a><p class="title"><b>Table 1.5. Supported postfix operators</b></p>
<div class="table-contents"><table class="table" summary="Supported postfix operators">
<colgroup>
<col>
@ -366,7 +366,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_typetraits.category.value_traits.operators.supported_binary_operators"></a><p class="title"><b>Table&#160;1.6.&#160;Supported binary operators</b></p>
<a name="boost_typetraits.category.value_traits.operators.supported_binary_operators"></a><p class="title"><b>Table 1.6. Supported binary operators</b></p>
<div class="table-contents"><table class="table" summary="Supported binary operators">
<colgroup>
<col>
@ -769,7 +769,7 @@
to be <code class="computeroutput"><span class="keyword">true</span></code>.
</p>
<div class="table">
<a name="boost_typetraits.category.value_traits.operators.necessary_and_non_sufficient_condition_on_operator_argument_for_value_to_be_true"></a><p class="title"><b>Table&#160;1.7.&#160;necessary and non sufficient condition on operator argument for
<a name="boost_typetraits.category.value_traits.operators.necessary_and_non_sufficient_condition_on_operator_argument_for_value_to_be_true"></a><p class="title"><b>Table 1.7. necessary and non sufficient condition on operator argument for
value to be true</b></p>
<div class="table-contents"><table class="table" summary="necessary and non sufficient condition on operator argument for
value to be true">
@ -905,7 +905,7 @@
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="boost_typetraits.category.value_traits.operators.necessary_and_non_sufficient_condition_on_operator_return_type_for_value_to_be_true"></a><p class="title"><b>Table&#160;1.8.&#160;necessary and non sufficient condition on operator return type for
<a name="boost_typetraits.category.value_traits.operators.necessary_and_non_sufficient_condition_on_operator_return_type_for_value_to_be_true"></a><p class="title"><b>Table 1.8. necessary and non sufficient condition on operator return type for
value to be true</b></p>
<div class="table-contents"><table class="table" summary="necessary and non sufficient condition on operator return type for
value to be true">
@ -1423,11 +1423,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Categorizing a Type</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
<link rel="prev" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
<link rel="next" href="properties.html" title="General Type Properties">
@ -119,11 +119,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>General Type Properties</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
<link rel="prev" href="primary.html" title="Categorizing a Type">
<link rel="next" href="relate.html" title="Relationships Between Two Types">
@ -96,6 +96,9 @@
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <a class="link" href="../../reference/is_default_constructible.html" title="is_default_constructible">is_default_constructible</a><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <a class="link" href="../../reference/is_list_constructible.html" title="is_list_constructible">is_list_constructible</a><span class="special">;</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <a class="link" href="../../reference/is_destructible.html" title="is_destructible">is_destructible</a><span class="special">;</span>
@ -135,11 +138,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Relationships Between Two Types</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../value_traits.html" title="Type Traits that Describe the Properties of a Type">
<link rel="prev" href="properties.html" title="General Type Properties">
<link rel="next" href="operators.html" title="Operator Type Traits">
@ -49,11 +49,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Credits</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="history.html" title="History">
<link rel="next" href="../index/s11.html" title="Class Index">
</head>
@ -39,7 +39,7 @@
This version of type traits library is based on contributions by Adobe Systems
Inc, David Abrahams, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Thorsten Ottosen, Robert
Ramey, Jeremy Siek and Antony Polukhin.
Ramey, Jeremy Siek, Antony Polukhin and Glen Fernandes.
</p>
<p>
Mat Marcus and Jesse Jones invented, and <a href="http://opensource.adobe.com/project4/project.shtml" target="_top">published
@ -62,11 +62,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Examples</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="mpl.html" title="MPL Interoperability">
<link rel="next" href="examples/copy.html" title="An Optimized Version of std::copy">
</head>
@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_typetraits.examples"></a><a class="link" href="examples.html" title="Examples">Examples</a>
</h2></div></div></div>
<div class="toc"><dl>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="examples/copy.html">An Optimized Version
of std::copy</a></span></dt>
<dt><span class="section"><a href="examples/fill.html">An Optimised Version
@ -43,11 +43,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>An Optimized Version of std::copy</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="../examples.html" title="Examples">
<link rel="next" href="fill.html" title="An Optimised Version of std::fill">
@ -78,11 +78,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>An Example that Omits Destructor Calls For Types with Trivial Destructors</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="fill.html" title="An Optimised Version of std::fill">
<link rel="next" href="iter.html" title="An improved Version of std::iter_swap">
@ -65,11 +65,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>An Optimised Version of std::fill</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="copy.html" title="An Optimized Version of std::copy">
<link rel="next" href="destruct.html" title="An Example that Omits Destructor Calls For Types with Trivial Destructors">
@ -72,11 +72,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Improving std::min with common_type</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="to_double.html" title="Convert Numeric Types and Enums to double">
<link rel="next" href="../reference.html" title="Alphabetical Reference">
@ -47,11 +47,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>An improved Version of std::iter_swap</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="destruct.html" title="An Example that Omits Destructor Calls For Types with Trivial Destructors">
<link rel="next" href="to_double.html" title="Convert Numeric Types and Enums to double">
@ -81,11 +81,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Convert Numeric Types and Enums to double</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../examples.html" title="Examples">
<link rel="prev" href="iter.html" title="An improved Version of std::iter_swap">
<link rel="next" href="improved_min.html" title="Improving std::min with common_type">
@ -41,11 +41,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>History</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="reference/type_with_alignment.html" title="type_with_alignment">
<link rel="next" href="credits.html" title="Credits">
</head>
@ -28,6 +28,80 @@
</h2></div></div></div>
<h5>
<a name="boost_typetraits.history.h0"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_70_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_70_0">Boost-1.70.0</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Added new traits <a class="link" href="reference/is_bounded_array.html" title="is_bounded_array">is_bounded_array</a>,
<a class="link" href="reference/is_unbounded_array.html" title="is_unbounded_array">is_unbounded_array</a>,
<a class="link" href="reference/copy_reference.html" title="copy_reference_">copy_reference</a>,
<a class="link" href="reference/copy_cv_ref.html" title="copy_cv_ref">copy_cv_ref</a>.
</li></ul></div>
<h5>
<a name="boost_typetraits.history.h1"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_68_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_68_0">Boost-1.68.0</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Added support for detecting trivial moves on clang.
</li>
<li class="listitem">
Correct some mismatched <code class="computeroutput"><span class="preprocessor">#pragam</span>
<span class="identifier">warning</span> <span class="identifier">push</span><span class="special">/</span><span class="identifier">pop</span></code>.
</li>
<li class="listitem">
Improve <a class="link" href="reference/is_virtual_base_of.html" title="is_virtual_base_of">is_virtual_base_of</a>
to give more robust answers.
</li>
<li class="listitem">
Add support for <a class="link" href="reference/is_final.html" title="is_final">is_final</a>
with msvc.
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h2"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_67_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_67_0">Boost
1.67.0</a>
</h5>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Added new traits <a class="link" href="reference/detected.html" title="detected">detected</a>,
<a class="link" href="reference/detected_or.html" title="detected_or">detected_or</a>,
<a class="link" href="reference/is_detected.html" title="is_detected">is_detected</a>,
<a class="link" href="reference/is_detected_convertible.html" title="is_detected_convertible">is_detected_convertible</a>,
<a class="link" href="reference/is_detected_exact.html" title="is_detected_exact">is_detected_exact</a>,
<a class="link" href="reference/is_complete.html" title="is_complete">is_complete</a>.
</li>
<li class="listitem">
Added greatly improved code for detecting binary operators.
</li>
<li class="listitem">
Add assertions for completeness to traits which require complete types
as arguments: this prevents various traits from giving eroneous results
from incomplete types.
</li>
<li class="listitem">
Fix minor issue with mpl compatibility, see <a href="https://svn.boost.org/trac/boost/ticket/12212" target="_top">#12212</a>.
</li>
<li class="listitem">
Add macro to indicate when is_constructible is fully implemented, see
<a href="https://svn.boost.org/trac/boost/ticket/12003" target="_top">#12003</a>.
</li>
<li class="listitem">
Update <a class="link" href="reference/is_function.html" title="is_function">is_function</a>
and <a class="link" href="reference/is_member_function_pointer.html" title="is_member_function_pointer">is_member_function_pointer</a>
to work correctly with C++17 noexcept specifications.
</li>
<li class="listitem">
Add workaround for <a class="link" href="reference/is_default_constructible.html" title="is_default_constructible">is_default_constructible</a>
and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>.
</li>
<li class="listitem">
Added fallback for <a class="link" href="reference/is_nothrow_swappable.html" title="is_nothrow_swappable">is_nothrow_swappable</a>
on pre-C++11 compilers.
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h3"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_64_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_64_0">Boost
1.64.0</a>
</h5>
@ -35,7 +109,7 @@
Added new trait <a class="link" href="reference/make_void.html" title="make_void">make_void</a>.
</li></ul></div>
<h5>
<a name="boost_typetraits.history.h1"></a>
<a name="boost_typetraits.history.h4"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_60_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_60_0">Boost
1.60.0</a>
</h5>
@ -54,11 +128,11 @@
<a class="link" href="reference/is_default_constructible.html" title="is_default_constructible">is_default_constructible</a>,
<a class="link" href="reference/is_constructible.html" title="is_constructible">is_constructible</a>
and <a class="link" href="reference/is_destructible.html" title="is_destructible">is_destructible</a>
required to fix bugs in a number of other traits, see for example <a href="https://svn.boost.org/trac/boost/ticket/7760" target="_top">#11324</a>.
required to fix bugs in a number of other traits, see for example <a href="https://svn.boost.org/trac/boost/ticket/11324" target="_top">#11324</a>.
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h2"></a>
<a name="boost_typetraits.history.h5"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_58_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_58_0">Boost
1.58.0</a>
</h5>
@ -73,7 +147,7 @@
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h3"></a>
<a name="boost_typetraits.history.h6"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_57_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_57_0">Boost
1.57.0</a>
</h5>
@ -87,7 +161,7 @@
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h4"></a>
<a name="boost_typetraits.history.h7"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_56_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_56_0">Boost
1.56.0</a>
</h5>
@ -96,7 +170,7 @@
<a href="https://svn.boost.org/trac/boost/ticket/9474" target="_top">#9474</a>.
</li></ul></div>
<h5>
<a name="boost_typetraits.history.h5"></a>
<a name="boost_typetraits.history.h8"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_55_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_55_0">Boost
1.55.0</a>
</h5>
@ -104,7 +178,7 @@
Added new trait <a class="link" href="reference/is_copy_constructible.html" title="is_copy_constructible">is_copy_constructible</a>.
</li></ul></div>
<h5>
<a name="boost_typetraits.history.h6"></a>
<a name="boost_typetraits.history.h9"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_54_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_54_0">Boost
1.54.0</a>
</h5>
@ -115,7 +189,7 @@
<a class="link" href="reference/has_trivial_move_constructor.html" title="has_trivial_move_constructor">has_trivial_move_constructor</a>.
</li></ul></div>
<h5>
<a name="boost_typetraits.history.h7"></a>
<a name="boost_typetraits.history.h10"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_47_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_47_0">Boost
1.47.0</a>
</h5>
@ -130,7 +204,7 @@
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h8"></a>
<a name="boost_typetraits.history.h11"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_45_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_45_0">Boost
1.45.0</a>
</h5>
@ -147,7 +221,7 @@
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h9"></a>
<a name="boost_typetraits.history.h12"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_44_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_44_0">Boost
1.44.0</a>
</h5>
@ -164,7 +238,7 @@
</li>
</ul></div>
<h5>
<a name="boost_typetraits.history.h10"></a>
<a name="boost_typetraits.history.h13"></a>
<span class="phrase"><a name="boost_typetraits.history.boost_1_42_0"></a></span><a class="link" href="history.html#boost_typetraits.history.boost_1_42_0">Boost
1.42.0</a>
</h5>
@ -174,11 +248,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Support for Compiler Intrinsics</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="user_defined.html" title="User Defined Specializations">
<link rel="next" href="mpl.html" title="MPL Interoperability">
</head>
@ -117,7 +117,7 @@
of the following macros:
</p>
<div class="table">
<a name="boost_typetraits.intrinsics.macros_for_compiler_intrinsics"></a><p class="title"><b>Table&#160;1.9.&#160;Macros for Compiler Intrinsics</b></p>
<a name="boost_typetraits.intrinsics.macros_for_compiler_intrinsics"></a><p class="title"><b>Table 1.9. Macros for Compiler Intrinsics</b></p>
<div class="table-contents"><table class="table" summary="Macros for Compiler Intrinsics">
<colgroup>
<col>
@ -420,11 +420,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,12 +1,12 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Introduction</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="next" href="background.html" title="Background and Tutorial">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -48,11 +48,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MPL Interoperability</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="intrinsics.html" title="Support for Compiler Intrinsics">
<link rel="next" href="examples.html" title="Examples">
</head>
@ -42,11 +42,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,11 +1,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Alphabetical Reference</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="prev" href="examples/improved_min.html" title="Improving std::min with common_type">
<link rel="next" href="reference/add_const.html" title="add_const">
</head>
@ -26,7 +26,7 @@
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_typetraits.reference"></a><a class="link" href="reference.html" title="Alphabetical Reference">Alphabetical Reference</a>
</h2></div></div></div>
<div class="toc"><dl>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="reference/add_const.html">add_const</a></span></dt>
<dt><span class="section"><a href="reference/add_cv.html">add_cv</a></span></dt>
<dt><span class="section"><a href="reference/add_lvalue_reference.html">add_lvalue_reference</a></span></dt>
@ -37,10 +37,17 @@
<dt><span class="section"><a href="reference/aligned_storage.html">aligned_storage</a></span></dt>
<dt><span class="section"><a href="reference/alignment_of.html">alignment_of</a></span></dt>
<dt><span class="section"><a href="reference/conditional.html">conditional</a></span></dt>
<dt><span class="section"><a href="reference/conjunction.html">conjunction</a></span></dt>
<dt><span class="section"><a href="reference/common_type.html">common_type</a></span></dt>
<dt><span class="section"><a href="reference/copy_cv.html">copy_cv</a></span></dt>
<dt><span class="section"><a href="reference/copy_cv_ref.html">copy_cv_ref</a></span></dt>
<dt><span class="section"><a href="reference/copy_reference.html">copy_reference_</a></span></dt>
<dt><span class="section"><a href="reference/decay.html">decay</a></span></dt>
<dt><span class="section"><a href="reference/declval.html">declval</a></span></dt>
<dt><span class="section"><a href="reference/detected.html">detected</a></span></dt>
<dt><span class="section"><a href="reference/detected_or.html">detected_or</a></span></dt>
<dt><span class="section"><a href="reference/disjunction.html">disjunction</a></span></dt>
<dt><span class="section"><a href="reference/enable_if.html">enable_if_</a></span></dt>
<dt><span class="section"><a href="reference/extent.html">extent</a></span></dt>
<dt><span class="section"><a href="reference/floating_point_promotion.html">floating_point_promotion</a></span></dt>
<dt><span class="section"><a href="reference/function_traits.html">function_traits</a></span></dt>
@ -105,7 +112,9 @@
<dt><span class="section"><a href="reference/is_array.html">is_array</a></span></dt>
<dt><span class="section"><a href="reference/is_assignable.html">is_assignable</a></span></dt>
<dt><span class="section"><a href="reference/is_base_of.html">is_base_of</a></span></dt>
<dt><span class="section"><a href="reference/is_bounded_array.html">is_bounded_array</a></span></dt>
<dt><span class="section"><a href="reference/is_class.html">is_class</a></span></dt>
<dt><span class="section"><a href="reference/is_complete.html">is_complete</a></span></dt>
<dt><span class="section"><a href="reference/is_complex.html">is_complex</a></span></dt>
<dt><span class="section"><a href="reference/is_compound.html">is_compound</a></span></dt>
<dt><span class="section"><a href="reference/is_const.html">is_const</a></span></dt>
@ -115,6 +124,9 @@
<dt><span class="section"><a href="reference/is_copy_constructible.html">is_copy_constructible</a></span></dt>
<dt><span class="section"><a href="reference/is_default_constructible.html">is_default_constructible</a></span></dt>
<dt><span class="section"><a href="reference/is_destructible.html">is_destructible</a></span></dt>
<dt><span class="section"><a href="reference/is_detected.html">is_detected</a></span></dt>
<dt><span class="section"><a href="reference/is_detected_convertible.html">is_detected_convertible</a></span></dt>
<dt><span class="section"><a href="reference/is_detected_exact.html">is_detected_exact</a></span></dt>
<dt><span class="section"><a href="reference/is_empty.html">is_empty</a></span></dt>
<dt><span class="section"><a href="reference/is_enum.html">is_enum</a></span></dt>
<dt><span class="section"><a href="reference/is_final.html">is_final</a></span></dt>
@ -122,12 +134,14 @@
<dt><span class="section"><a href="reference/is_function.html">is_function</a></span></dt>
<dt><span class="section"><a href="reference/is_fundamental.html">is_fundamental</a></span></dt>
<dt><span class="section"><a href="reference/is_integral.html">is_integral</a></span></dt>
<dt><span class="section"><a href="reference/is_list_constructible.html">is_list_constructible</a></span></dt>
<dt><span class="section"><a href="reference/is_lvalue_reference.html">is_lvalue_reference</a></span></dt>
<dt><span class="section"><a href="reference/is_member_function_pointer.html">is_member_function_pointer</a></span></dt>
<dt><span class="section"><a href="reference/is_member_object_pointer.html">is_member_object_pointer</a></span></dt>
<dt><span class="section"><a href="reference/is_member_pointer.html">is_member_pointer</a></span></dt>
<dt><span class="section"><a href="reference/is_nothrow_move_assignable.html">is_nothrow_move_assignable</a></span></dt>
<dt><span class="section"><a href="reference/is_nothrow_move_constructible.html">is_nothrow_move_constructible</a></span></dt>
<dt><span class="section"><a href="reference/is_nothrow_swappable.html">is_nothrow_swappable</a></span></dt>
<dt><span class="section"><a href="reference/is_object.html">is_object</a></span></dt>
<dt><span class="section"><a href="reference/is_pod.html">is_pod</a></span></dt>
<dt><span class="section"><a href="reference/is_pointer.html">is_pointer</a></span></dt>
@ -136,9 +150,13 @@
<dt><span class="section"><a href="reference/is_rvalue_reference.html">is_rvalue_reference</a></span></dt>
<dt><span class="section"><a href="reference/is_same.html">is_same</a></span></dt>
<dt><span class="section"><a href="reference/is_scalar.html">is_scalar</a></span></dt>
<dt><span class="section"><a href="reference/is_scoped_enum.html">is_scoped_enum</a></span></dt>
<dt><span class="section"><a href="reference/is_signed.html">is_signed</a></span></dt>
<dt><span class="section"><a href="reference/is_stateless.html">is_stateless</a></span></dt>
<dt><span class="section"><a href="reference/is_trivially_copyable.html">is_trivially_copyable</a></span></dt>
<dt><span class="section"><a href="reference/is_unbounded_array.html">is_unbounded_array</a></span></dt>
<dt><span class="section"><a href="reference/is_union.html">is_union</a></span></dt>
<dt><span class="section"><a href="reference/is_unscoped_enum.html">is_unscoped_enum</a></span></dt>
<dt><span class="section"><a href="reference/is_unsigned.html">is_unsigned</a></span></dt>
<dt><span class="section"><a href="reference/is_virtual_base_of.html">is_virtual_base_of</a></span></dt>
<dt><span class="section"><a href="reference/is_void.html">is_void</a></span></dt>
@ -146,11 +164,14 @@
<dt><span class="section"><a href="reference/make_signed.html">make_signed</a></span></dt>
<dt><span class="section"><a href="reference/make_unsigned.html">make_unsigned</a></span></dt>
<dt><span class="section"><a href="reference/make_void.html">make_void</a></span></dt>
<dt><span class="section"><a href="reference/negation.html">negation</a></span></dt>
<dt><span class="section"><a href="reference/nonesuch.html">nonesuch</a></span></dt>
<dt><span class="section"><a href="reference/promote.html">promote</a></span></dt>
<dt><span class="section"><a href="reference/rank.html">rank</a></span></dt>
<dt><span class="section"><a href="reference/remove_all_extents.html">remove_all_extents</a></span></dt>
<dt><span class="section"><a href="reference/remove_const.html">remove_const</a></span></dt>
<dt><span class="section"><a href="reference/remove_cv.html">remove_cv</a></span></dt>
<dt><span class="section"><a href="reference/remove_cv_ref.html">remove_cv_ref</a></span></dt>
<dt><span class="section"><a href="reference/remove_extent.html">remove_extent</a></span></dt>
<dt><span class="section"><a href="reference/remove_pointer.html">remove_pointer</a></span></dt>
<dt><span class="section"><a href="reference/remove_reference.html">remove_reference</a></span></dt>
@ -158,14 +179,15 @@
<dt><span class="section"><a href="reference/type_identity.html">type_identity</a></span></dt>
<dt><span class="section"><a href="reference/type_with_alignment.html">type_with_alignment</a></span></dt>
</dl></div>
<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"></ol></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_const</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="../reference.html" title="Alphabetical Reference">
<link rel="next" href="add_cv.html" title="add_cv">
@ -47,7 +47,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_const.examples"></a><p class="title"><b>Table&#160;1.10.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_const.examples"></a><p class="title"><b>Table 1.10. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -125,11 +125,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_cv</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_const.html" title="add_const">
<link rel="next" href="add_lvalue_reference.html" title="add_lvalue_reference">
@ -48,7 +48,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_cv.examples"></a><p class="title"><b>Table&#160;1.11.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_cv.examples"></a><p class="title"><b>Table 1.11. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -128,11 +128,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_lvalue_reference</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_cv.html" title="add_cv">
<link rel="next" href="add_pointer.html" title="add_pointer">
@ -52,7 +52,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_lvalue_reference.examples"></a><p class="title"><b>Table&#160;1.12.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_lvalue_reference.examples"></a><p class="title"><b>Table 1.12. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -154,11 +154,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_pointer</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_lvalue_reference.html" title="add_lvalue_reference">
<link rel="next" href="add_reference.html" title="add_reference">
@ -50,7 +50,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_pointer.examples"></a><p class="title"><b>Table&#160;1.13.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_pointer.examples"></a><p class="title"><b>Table 1.13. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -127,11 +127,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_reference</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_pointer.html" title="add_pointer">
<link rel="next" href="add_rvalue_reference.html" title="add_rvalue_reference">
@ -59,7 +59,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_reference.examples"></a><p class="title"><b>Table&#160;1.14.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_reference.examples"></a><p class="title"><b>Table 1.14. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -136,11 +136,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_rvalue_reference</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_reference.html" title="add_reference">
<link rel="next" href="add_volatile.html" title="add_volatile">
@ -52,7 +52,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_rvalue_reference.examples"></a><p class="title"><b>Table&#160;1.15.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_rvalue_reference.examples"></a><p class="title"><b>Table 1.15. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -154,11 +154,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>add_volatile</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_rvalue_reference.html" title="add_rvalue_reference">
<link rel="next" href="aligned_storage.html" title="aligned_storage">
@ -47,7 +47,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.add_volatile.examples"></a><p class="title"><b>Table&#160;1.16.&#160;Examples</b></p>
<a name="boost_typetraits.reference.add_volatile.examples"></a><p class="title"><b>Table 1.16. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -126,11 +126,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>aligned_storage</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="add_volatile.html" title="add_volatile">
<link rel="next" href="alignment_of.html" title="alignment_of">
@ -93,11 +93,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>alignment_of</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="aligned_storage.html" title="aligned_storage">
<link rel="next" href="conditional.html" title="conditional">
@ -97,11 +97,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@ -1,12 +1,12 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>common_type</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="conditional.html" title="conditional">
<link rel="prev" href="conjunction.html" title="conjunction">
<link rel="next" href="copy_cv.html" title="copy_cv">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="conditional.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="conjunction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -320,11 +320,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -332,7 +332,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="conditional.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="conjunction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -1,13 +1,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>conditional</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="alignment_of.html" title="alignment_of">
<link rel="next" href="common_type.html" title="common_type">
<link rel="next" href="conjunction.html" title="conjunction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="common_type.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="conjunction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -43,11 +43,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -55,7 +55,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="common_type.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="alignment_of.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="conjunction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,90 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>conjunction</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="conditional.html" title="conditional">
<link rel="next" href="common_type.html" title="common_type">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="conditional.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="common_type.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.conjunction"></a><a class="link" href="conjunction.html" title="conjunction">conjunction</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">conjunction</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Inherits:</strong></span> Inherits from the first type
<code class="computeroutput"><span class="identifier">U</span></code> in the list for which
<code class="computeroutput"><span class="keyword">bool</span><span class="special">(</span><span class="identifier">U</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span></code> is <code class="computeroutput"><span class="keyword">false</span></code>,
or the last type in the list if there is no such type. If <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">...(</span><span class="identifier">T</span><span class="special">)</span></code>
is <code class="computeroutput"><span class="number">0</span></code> then inherits from <code class="computeroutput"><a class="link" href="integral_constant.html" title="integral_constant">true_type</a></code>.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">conjunction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
are supported by this trait. In the absence of variadic-template support,
<code class="computeroutput"><span class="identifier">conjunction</span></code> has only 2 parameters.
</p>
<p>
<span class="bold"><strong>Examples:</strong></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
Given: <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">Int</span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">N</span> <span class="special">};</span></code>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">conjunction</span><span class="special">&lt;&gt;</span></code>
inherits from <code class="computeroutput"><a class="link" href="integral_constant.html" title="integral_constant">true_type</a></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">conjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">conjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;,</span> <span class="identifier">Int</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;,</span>
<span class="identifier">Int</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">conjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;,</span> <span class="identifier">Int</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;,</span>
<span class="identifier">Int</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="conditional.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="common_type.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -1,13 +1,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>copy_cv</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="common_type.html" title="common_type">
<link rel="next" href="decay.html" title="decay">
<link rel="next" href="copy_cv_ref.html" title="copy_cv_ref">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="common_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="common_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -44,7 +44,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.copy_cv.examples"></a><p class="title"><b>Table&#160;1.17.&#160;Examples</b></p>
<a name="boost_typetraits.reference.copy_cv.examples"></a><p class="title"><b>Table 1.17. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -147,11 +147,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -159,7 +159,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="common_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="common_type.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_cv_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,284 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>copy_cv_ref</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="copy_cv.html" title="copy_cv">
<link rel="next" href="copy_reference.html" title="copy_reference_">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.copy_cv_ref"></a><a class="link" href="copy_cv_ref.html" title="copy_cv_ref">copy_cv_ref</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">copy_cv_ref</span>
<span class="special">{</span>
<span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
<span class="special">};</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">copy_cv_ref_t</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">U</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>type:</strong></span> <code class="literal">T <span class="emphasis"><em>cvref</em></span></code>,
where <span class="emphasis"><em>cvref</em></span> are the cvref-qualifiers of <code class="computeroutput"><span class="identifier">U</span></code>.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">copy_cv_ref</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
or <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.copy_cv_ref.examples"></a><p class="title"><b>Table 1.18. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Result Type
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">int</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">volatile</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">volatile</span> <span class="keyword">int</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">int</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">volatile</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">volatile</span> <span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">volatile</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">volatile</span> <span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&amp;,</span>
<span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span>
<span class="keyword">const</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span>
<span class="keyword">volatile</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_cv_ref</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span>
<span class="keyword">const</span> <span class="keyword">volatile</span>
<span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
are supported by this trait. The type alias <code class="computeroutput"><span class="identifier">copy_cv_ref_t</span></code>
is only available if the compiler supports template aliases.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copy_reference.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,201 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>copy_reference_</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="copy_cv_ref.html" title="copy_cv_ref">
<link rel="next" href="decay.html" title="decay">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.copy_reference"></a><a class="link" href="copy_reference.html" title="copy_reference_">copy_reference_</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">copy_reference</span>
<span class="special">{</span>
<span class="keyword">typedef</span> <em class="replaceable"><code>see-below</code></em> <span class="identifier">type</span><span class="special">;</span>
<span class="special">};</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">copy_reference_t</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">U</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>type:</strong></span> <code class="literal">T <span class="emphasis"><em>ref</em></span></code>,
where <span class="emphasis"><em>ref</em></span> are the ref-qualifiers of <code class="computeroutput"><span class="identifier">U</span></code>.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">copy_reference</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
or <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.copy_reference.examples"></a><p class="title"><b>Table 1.19. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Result Type
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;,</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&amp;,</span> <span class="keyword">char</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&amp;,</span> <span class="keyword">char</span><span class="special">&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">copy_reference</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&amp;&amp;,</span> <span class="keyword">char</span><span class="special">&amp;&amp;&gt;::</span><span class="identifier">type</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="keyword">int</span><span class="special">&amp;&amp;</span></code>
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<br class="table-break"><p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
are supported by this trait. The type alias <code class="computeroutput"><span class="identifier">copy_reference_t</span></code>
is only available if the compiler supports template aliases.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="decay.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -1,12 +1,12 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>decay</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="copy_cv.html" title="copy_cv">
<link rel="prev" href="copy_reference.html" title="copy_reference_">
<link rel="next" href="declval.html" title="declval">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="declval.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="copy_reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="declval.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -39,7 +39,7 @@
be the result of <code class="computeroutput"><span class="identifier">remove_reference</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></code>, then if <code class="computeroutput"><span class="identifier">U</span></code>
is an array type, the result is <code class="computeroutput"><span class="identifier">remove_extent</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">*</span></code>,
otherwise if <code class="computeroutput"><span class="identifier">U</span></code> is a function
type then the result is <code class="computeroutput"><span class="identifier">U</span><span class="special">*</span></code>, otherwise the result is <code class="computeroutput"><span class="identifier">U</span></code>.
type then the result is <code class="computeroutput"><span class="identifier">U</span><span class="special">*</span></code>, otherwise the result is <code class="computeroutput"><span class="identifier">remove_cv</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;::</span><span class="identifier">type</span></code>.
</p>
<p>
<span class="bold"><strong>C++ Standard Reference:</strong></span> 3.9.1.
@ -50,7 +50,7 @@
or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="table">
<a name="boost_typetraits.reference.decay.examples"></a><p class="title"><b>Table&#160;1.18.&#160;Examples</b></p>
<a name="boost_typetraits.reference.decay.examples"></a><p class="title"><b>Table 1.20. Examples</b></p>
<div class="table-contents"><table class="table" summary="Examples">
<colgroup>
<col>
@ -139,11 +139,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -151,7 +151,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="copy_cv.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="declval.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="copy_reference.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="declval.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -1,13 +1,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>declval</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="decay.html" title="decay">
<link rel="next" href="extent.html" title="extent">
<link rel="next" href="detected.html" title="detected">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@ -20,7 +20,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="decay.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="decay.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="detected.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
@ -48,11 +48,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
Watanabe<p>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -60,7 +60,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="decay.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
<a accesskey="p" href="decay.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="detected.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,88 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>detected</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="declval.html" title="declval">
<link rel="next" href="detected_or.html" title="detected_or">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="declval.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="detected_or.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.detected"></a><a class="link" href="detected.html" title="detected">detected</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...&gt;</span> <span class="keyword">class</span> <span class="identifier">Op</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">detected_t</span> <span class="special">=</span> <em class="replaceable"><code>see-below</code></em><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Aliases:</strong></span> <code class="computeroutput"><span class="identifier">Op</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span></code> if it is a valid template-id, otherwise
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">nonesuch</span></code>.
</p>
<p>
<span class="bold"><strong>C++ Standard Paper:</strong></span> <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf" target="_top">N4502</a>
</p>
<p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> Requires C++11 variadic
templates and C++11 template aliases.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">detected</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
<span class="bold"><strong>Examples:</strong></span>
</p>
<p>
Suppose you wish to determine whether a type has a <code class="computeroutput"><span class="identifier">size</span><span class="special">()</span></code> const-member function, then given the meta-functions:
</p>
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">size_member_tester</span> <span class="special">=</span> <span class="keyword">decltype</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">declval</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;&gt;().</span><span class="identifier">size</span><span class="special">());</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">size_member_t</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detected_t</span><span class="special">&lt;</span><span class="identifier">size_member_tester</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;;</span>
</pre>
<p>
Then the type <code class="computeroutput"><span class="identifier">size_member_t</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
is an alias for <code class="computeroutput"><span class="identifier">size_member_tester</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
if the operation is valid, and an alias for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">nonesuch</span></code>
otherwise.
</p>
<p>
See also: <a class="link" href="is_detected.html" title="is_detected">is_detected</a>,
<a class="link" href="is_detected_convertible.html" title="is_detected_convertible">is_detected_convertible</a>,
<a class="link" href="is_detected_exact.html" title="is_detected_exact">is_detected_exact</a>.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="declval.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="detected_or.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,102 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>detected_or</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="detected.html" title="detected">
<link rel="next" href="disjunction.html" title="disjunction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="detected.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjunction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.detected_or"></a><a class="link" href="detected_or.html" title="detected_or">detected_or</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Default</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...&gt;</span> <span class="keyword">class</span> <span class="identifier">Op</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">detected_or</span> <span class="special">=</span> <em class="replaceable"><code>see-below</code></em><span class="special">;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Default</span><span class="special">,</span> <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...&gt;</span> <span class="keyword">class</span> <span class="identifier">Op</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">detected_or_t</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">detected_or</span><span class="special">&lt;</span><span class="identifier">Default</span><span class="special">,</span> <span class="identifier">Op</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">...&gt;::</span><span class="identifier">type</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Aliases:</strong></span> An unspecified type with two public
member type definitions:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">value_t</span></code> is <a class="link" href="integral_constant.html" title="integral_constant">true_type</a>
if <code class="computeroutput"><span class="identifier">Op</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span></code>
is a valid template-id, otherwise <a class="link" href="integral_constant.html" title="integral_constant">false_type</a>
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">type</span></code> is <code class="computeroutput"><span class="identifier">Op</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">...&gt;</span></code>
if it is a valid template-id, otherwise <code class="computeroutput"><span class="identifier">Default</span></code>
</li>
</ul></div>
<p>
<span class="bold"><strong>C++ Standard Paper:</strong></span> <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf" target="_top">N4502</a>
</p>
<p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> Requires C++11 variadic
templates and C++11 template aliases.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">detected_or</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
<span class="bold"><strong>Examples:</strong></span>
</p>
<p>
Suppose we wish to declare a type that represents the difference between
two values of type T, it should be T::difference_type if such a type exists,
or std::ptrdiff_t otherwise:
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">difference_t</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">difference_type</span><span class="special">;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">difference_type</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">detected_or_t</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span><span class="special">,</span> <span class="identifier">difference_t</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;;</span>
</pre>
<p>
Now the type <code class="computeroutput"><span class="identifier">difference_type</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
gives us what we need.
</p>
<p>
See also: <a class="link" href="is_detected.html" title="is_detected">is_detected</a>,
<a class="link" href="is_detected_convertible.html" title="is_detected_convertible">is_detected_convertible</a>,
<a class="link" href="is_detected_exact.html" title="is_detected_exact">is_detected_exact</a>.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="detected.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="disjunction.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,90 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>disjunction</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="detected_or.html" title="detected_or">
<link rel="next" href="enable_if.html" title="enable_if_">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="detected_or.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enable_if.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.disjunction"></a><a class="link" href="disjunction.html" title="disjunction">disjunction</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span><span class="special">...</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">disjunction</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>Inherits:</strong></span> Inherits from the first type
<code class="computeroutput"><span class="identifier">U</span></code> in the list for which
<code class="computeroutput"><span class="keyword">bool</span><span class="special">(</span><span class="identifier">U</span><span class="special">::</span><span class="identifier">value</span><span class="special">)</span></code> is <code class="computeroutput"><span class="keyword">true</span></code>,
or the last type in the list if there is no such type. If <code class="computeroutput"><span class="keyword">sizeof</span><span class="special">...(</span><span class="identifier">T</span><span class="special">)</span></code>
is <code class="computeroutput"><span class="number">0</span></code> then inherits from <code class="computeroutput"><a class="link" href="integral_constant.html" title="integral_constant">false_type</a></code>.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">disjunction</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
are supported by this trait. In the absence of variadic-template support,
<code class="computeroutput"><span class="identifier">disjunction</span></code> has only 2 parameters.
</p>
<p>
<span class="bold"><strong>Examples:</strong></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
Given: <code class="computeroutput"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">int</span> <span class="identifier">N</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">Int</span> <span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">N</span> <span class="special">};</span></code>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">disjunction</span><span class="special">&lt;&gt;</span></code>
inherits from <code class="computeroutput"><a class="link" href="integral_constant.html" title="integral_constant">false_type</a></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">disjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">disjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;,</span> <span class="identifier">Int</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;,</span>
<span class="identifier">Int</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">1</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">disjunction</span><span class="special">&lt;</span><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;,</span> <span class="identifier">Int</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;,</span>
<span class="identifier">Int</span><span class="special">&lt;</span><span class="number">3</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
inherits from <code class="computeroutput"><span class="identifier">Int</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;</span></code>.
</p></blockquote></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="detected_or.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="enable_if.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,100 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>enable_if_</title>
<link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Chapter 1. Boost.TypeTraits">
<link rel="up" href="../reference.html" title="Alphabetical Reference">
<link rel="prev" href="disjunction.html" title="disjunction">
<link rel="next" href="extent.html" title="extent">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="disjunction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_typetraits.reference.enable_if"></a><a class="link" href="enable_if.html" title="enable_if_">enable_if_</a>
</h3></div></div></div>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">bool</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">enable_if_</span><span class="special">;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">bool</span> <span class="identifier">B</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span>
<span class="keyword">using</span> <span class="identifier">enable_if_t</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">enable_if_</span><span class="special">&lt;</span><span class="identifier">B</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">;</span>
</pre>
<p>
<span class="bold"><strong>type:</strong></span> If <code class="computeroutput"><span class="identifier">B</span></code>
is true, then the member <code class="computeroutput"><span class="identifier">type</span></code>
is defined to be <code class="computeroutput"><span class="identifier">T</span></code>. Otherwise
there is no member <code class="computeroutput"><span class="identifier">type</span></code>.
</p>
<p>
<span class="bold"><strong>Header:</strong></span> <code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">enable_if</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
<th align="left">Note</th>
</tr>
<tr><td align="left" valign="top"><p>
The trait has the name <code class="computeroutput"><span class="identifier">enable_if_</span></code>
(with a trailing underscore) but behaves like <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if</span></code>
or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_c</span></code>. The existing trait with
the name <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code> has a different interface.
</p></td></tr>
</table></div>
<p>
<span class="bold"><strong>Examples:</strong></span>
</p>
<p>
The following function can be used to destroy each element of an array and
specially handle arrays of trivially destructible types.
</p>
<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_</span><span class="special">&lt;!</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="identifier">destroy</span><span class="special">(</span><span class="identifier">T</span><span class="special">*</span> <span class="identifier">ptr</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">size</span><span class="special">)</span>
<span class="special">{</span>
<span class="keyword">while</span> <span class="special">(</span><span class="identifier">size</span> <span class="special">&gt;</span> <span class="number">0</span><span class="special">)</span> <span class="special">{</span>
<span class="identifier">ptr</span><span class="special">[--</span><span class="identifier">size</span><span class="special">].~</span><span class="identifier">T</span><span class="special">();</span>
<span class="special">}</span>
<span class="special">}</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if_</span><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">has_trivial_destructor</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">&gt;::</span><span class="identifier">type</span>
<span class="identifier">destroy</span><span class="special">(</span><span class="identifier">T</span><span class="special">*,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span><span class="special">)</span> <span class="special">{</span> <span class="special">}</span>
</pre>
<p>
<span class="bold"><strong>Compiler Compatibility:</strong></span> All current compilers
are supported by this trait. The type alias <code class="computeroutput"><span class="identifier">enable_if_t</span></code>
is only available if the compiler supports template aliases.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2000, 2011 Adobe Systems Inc, David Abrahams,
Frederic Bron, Steve Cleary, Beman Dawes, Glen Fernandes, Aleksey Gurtovoy,
Howard Hinnant, Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander
Nasonov, Thorsten Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert
Stewart and Steven Watanabe<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="disjunction.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="extent.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More