From b78fd5f29d87df23904acb75b492761e4e1d73b0 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Wed, 31 Jan 2018 18:55:04 +0000
Subject: [PATCH] Type_traits.detection idiom: flesh out docs and add history.
---
doc/detected.qbk | 16 +++
doc/detected_or.qbk | 7 ++
doc/history.qbk | 4 +
doc/html/boost_typetraits/credits.html | 2 +-
doc/html/boost_typetraits/history.html | 32 ++++--
doc/html/boost_typetraits/reference.html | 6 ++
.../boost_typetraits/reference/declval.html | 6 +-
.../boost_typetraits/reference/detected.html | 88 +++++++++++++++
.../reference/detected_or.html | 102 ++++++++++++++++++
.../boost_typetraits/reference/extent.html | 6 +-
.../reference/is_destructible.html | 6 +-
.../reference/is_detected.html | 94 ++++++++++++++++
.../reference/is_detected_convertible.html | 84 +++++++++++++++
.../reference/is_detected_exact.html | 84 +++++++++++++++
.../boost_typetraits/reference/is_empty.html | 6 +-
.../boost_typetraits/reference/make_void.html | 6 +-
.../boost_typetraits/reference/nonesuch.html | 62 +++++++++++
.../boost_typetraits/reference/promote.html | 6 +-
doc/html/index.html | 6 ++
doc/html/index/s11.html | 9 +-
doc/html/index/s12.html | 2 +-
doc/html/index/s13.html | 2 +-
doc/html/index/s14.html | 9 +-
doc/is_detected.qbk | 5 +
doc/is_detected_convertible.qbk | 6 ++
doc/is_detected_exact.qbk | 6 ++
doc/nonesuch.qbk | 2 +
27 files changed, 627 insertions(+), 37 deletions(-)
create mode 100644 doc/html/boost_typetraits/reference/detected.html
create mode 100644 doc/html/boost_typetraits/reference/detected_or.html
create mode 100644 doc/html/boost_typetraits/reference/is_detected.html
create mode 100644 doc/html/boost_typetraits/reference/is_detected_convertible.html
create mode 100644 doc/html/boost_typetraits/reference/is_detected_exact.html
create mode 100644 doc/html/boost_typetraits/reference/nonesuch.html
diff --git a/doc/detected.qbk b/doc/detected.qbk
index cbe4d90..59b1032 100644
--- a/doc/detected.qbk
+++ b/doc/detected.qbk
@@ -21,4 +21,20 @@ __compat Requires C++11 variadic templates and C++11 template aliases.
__header `#include `
+__examples
+
+Suppose you wish to determine whether a type has a `size()` const-member function, then given the meta-functions:
+
+ template
+ using size_member_tester = decltype(std::declval().size());
+
+ template
+ using size_member_t = boost::detected_t;
+
+
+Then the type `size_member_t` is an alias for `size_member_tester` if the operation is valid, and an alias for
+`boost::nonesuch` otherwise.
+
+See also: __is_detected, __is_detected_convertible, __is_detected_exact.
+
[endsect]
diff --git a/doc/detected_or.qbk b/doc/detected_or.qbk
index aeb8186..e036fd0 100644
--- a/doc/detected_or.qbk
+++ b/doc/detected_or.qbk
@@ -29,10 +29,17 @@ __header `#include `
__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
using difference_t = typename T::difference_type;
template
using difference_type = boost::detected_or_t;
+Now the type `difference_type` gives us what we need.
+
+See also: __is_detected, __is_detected_convertible, __is_detected_exact.
+
[endsect]
diff --git a/doc/history.qbk b/doc/history.qbk
index ed49f57..edfb19c 100644
--- a/doc/history.qbk
+++ b/doc/history.qbk
@@ -7,6 +7,10 @@
[section:history History]
+[h4 Boost 1.67.0]
+
+* Added new traits __detected, __detected_or, __is_detected, __is_detected_convertible, and __is_detected_exact.
+
[h4 Boost 1.64.0]
* Added new trait __make_void.
diff --git a/doc/html/boost_typetraits/credits.html b/doc/html/boost_typetraits/credits.html
index 741b632..cc87646 100644
--- a/doc/html/boost_typetraits/credits.html
+++ b/doc/html/boost_typetraits/credits.html
@@ -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.
Mat Marcus and Jesse Jones invented, and published
diff --git a/doc/html/boost_typetraits/history.html b/doc/html/boost_typetraits/history.html
index 3af9567..c133fd1 100644
--- a/doc/html/boost_typetraits/history.html
+++ b/doc/html/boost_typetraits/history.html
@@ -28,6 +28,18 @@
+
+
@@ -35,7 +47,7 @@
Added new trait make_void.
@@ -58,7 +70,7 @@
@@ -73,7 +85,7 @@
@@ -87,7 +99,7 @@
@@ -96,7 +108,7 @@
#9474.
@@ -104,7 +116,7 @@
Added new trait is_copy_constructible.
@@ -115,7 +127,7 @@
has_trivial_move_constructor.
@@ -130,7 +142,7 @@
@@ -147,7 +159,7 @@
@@ -164,7 +176,7 @@
diff --git a/doc/html/boost_typetraits/reference.html b/doc/html/boost_typetraits/reference.html
index 9ac935f..668a724 100644
--- a/doc/html/boost_typetraits/reference.html
+++ b/doc/html/boost_typetraits/reference.html
@@ -41,6 +41,8 @@
copy_cv
decay
declval
+detected
+detected_or
extent
floating_point_promotion
function_traits
@@ -115,6 +117,9 @@
is_copy_constructible
is_default_constructible
is_destructible
+is_detected
+is_detected_convertible
+is_detected_exact
is_empty
is_enum
is_final
@@ -148,6 +153,7 @@
make_signed
make_unsigned
make_void
+nonesuch
promote
rank
remove_all_extents
diff --git a/doc/html/boost_typetraits/reference/declval.html b/doc/html/boost_typetraits/reference/declval.html
index 77983cc..6ee8f09 100644
--- a/doc/html/boost_typetraits/reference/declval.html
+++ b/doc/html/boost_typetraits/reference/declval.html
@@ -7,7 +7,7 @@
-
+