diff --git a/CHANGELOG.md b/CHANGELOG.md
index 862b319d..2a6633d8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,16 +6,19 @@ Version 210:
* Add stream_traits.hpp
* Add executor_type trait
* Fix hexadecimal string conversion table
+* is_completion_handler, type_traits.hpp are deprecated
API Changes:
* Stream traits are now in stream_traits.hpp
* `is_file` is now in file_base.hpp
+* is_completion_handler is deprecated
Actions Required:
* Include stream_traits.hpp as needed
* Include file_base.hpp as needed
+* Use std::is_invocable instead of is_completion_handler
--------------------------------------------------------------------------------
diff --git a/doc/qbk/03_core/2_streams.qbk b/doc/qbk/03_core/2_streams.qbk
index b208d73f..6b2683a5 100644
--- a/doc/qbk/03_core/2_streams.qbk
+++ b/doc/qbk/03_core/2_streams.qbk
@@ -86,12 +86,6 @@ checks helps provide more concise errors during compilation:
][
Determine if a type meets the requirements of __AsyncWriteStream__.
]]
-[[
- [link beast.ref.boost__beast__is_completion_handler `is_completion_handler`]
-][
- Determine if a type meets the requirements of __CompletionHandler__,
- and is callable with a specified signature.
-]]
[[
[link beast.ref.boost__beast__is_sync_read_stream `is_sync_read_stream`]
][
diff --git a/doc/qbk/quickref.xml b/doc/qbk/quickref.xml
index 9f2269b6..7e21f714 100644
--- a/doc/qbk/quickref.xml
+++ b/doc/qbk/quickref.xml
@@ -82,7 +82,6 @@
is_async_read_stream
is_async_write_stream
is_async_stream
- is_completion_handler
is_file
is_sync_read_stream
is_sync_stream
diff --git a/include/boost/beast/_experimental/core/flat_stream.hpp b/include/boost/beast/_experimental/core/flat_stream.hpp
index 7727fe8f..0b8f27f8 100644
--- a/include/boost/beast/_experimental/core/flat_stream.hpp
+++ b/include/boost/beast/_experimental/core/flat_stream.hpp
@@ -12,7 +12,6 @@
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/_experimental/http/icy_stream.hpp b/include/boost/beast/_experimental/http/icy_stream.hpp
index 37a5df19..6683dbbe 100644
--- a/include/boost/beast/_experimental/http/icy_stream.hpp
+++ b/include/boost/beast/_experimental/http/icy_stream.hpp
@@ -12,8 +12,8 @@
#include
#include
-#include
#include
+#include
#include
namespace boost {
diff --git a/include/boost/beast/_experimental/test/stream.hpp b/include/boost/beast/_experimental/test/stream.hpp
index d452483a..37e1a53e 100644
--- a/include/boost/beast/_experimental/test/stream.hpp
+++ b/include/boost/beast/_experimental/test/stream.hpp
@@ -13,7 +13,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/core.hpp b/include/boost/beast/core.hpp
index 5e2ab241..4802ab7a 100644
--- a/include/boost/beast/core.hpp
+++ b/include/boost/beast/core.hpp
@@ -45,6 +45,5 @@
#include
#include
#include
-#include
#endif
diff --git a/include/boost/beast/core/basic_timeout_stream.hpp b/include/boost/beast/core/basic_timeout_stream.hpp
index 87216163..fc03141b 100644
--- a/include/boost/beast/core/basic_timeout_stream.hpp
+++ b/include/boost/beast/core/basic_timeout_stream.hpp
@@ -13,7 +13,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/core/bind_handler.hpp b/include/boost/beast/core/bind_handler.hpp
index 2d6620b9..7701dd79 100644
--- a/include/boost/beast/core/bind_handler.hpp
+++ b/include/boost/beast/core/bind_handler.hpp
@@ -11,7 +11,6 @@
#define BOOST_BEAST_BIND_HANDLER_HPP
#include
-#include
#include
#include
#include
@@ -65,12 +64,6 @@ detail::bind_wrapper<
#endif
bind_handler(Handler&& handler, Args&&... args)
{
-#if 0
- // Can't do this because of placeholders
- static_assert(is_completion_handler<
- Handler, void(Args...)>::value,
- "Handler requirements not met");
-#endif
return detail::bind_wrapper<
typename std::decay::type,
typename std::decay::type...>(
diff --git a/include/boost/beast/core/buffered_read_stream.hpp b/include/boost/beast/core/buffered_read_stream.hpp
index 293ed920..b65c6f2e 100644
--- a/include/boost/beast/core/buffered_read_stream.hpp
+++ b/include/boost/beast/core/buffered_read_stream.hpp
@@ -14,7 +14,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/core/detail/type_traits.hpp b/include/boost/beast/core/detail/type_traits.hpp
index 948b4993..e88f541f 100644
--- a/include/boost/beast/core/detail/type_traits.hpp
+++ b/include/boost/beast/core/detail/type_traits.hpp
@@ -133,10 +133,10 @@ struct is_contiguous_container::value, \
"CompletionHandler signature requirements not met"); \
- net::async_completion init{handler}
+ ::boost::beast::net::async_completion init{handler}
} // detail
} // beast
diff --git a/include/boost/beast/core/impl/buffered_read_stream.hpp b/include/boost/beast/core/impl/buffered_read_stream.hpp
index b512e204..0f50f4e3 100644
--- a/include/boost/beast/core/impl/buffered_read_stream.hpp
+++ b/include/boost/beast/core/impl/buffered_read_stream.hpp
@@ -15,7 +15,7 @@
#include
#include
#include
-#include
+#include
#include
#include
@@ -123,7 +123,7 @@ async_write_some(
static_assert(net::is_const_buffer_sequence<
ConstBufferSequence>::value,
"ConstBufferSequence requirements not met");
- static_assert(is_completion_handler::value,
"WriteHandler requirements not met");
return next_layer_.async_write_some(buffers,
diff --git a/include/boost/beast/core/impl/read_size.hpp b/include/boost/beast/core/impl/read_size.hpp
index bb015dc7..d360210b 100644
--- a/include/boost/beast/core/impl/read_size.hpp
+++ b/include/boost/beast/core/impl/read_size.hpp
@@ -10,6 +10,7 @@
#ifndef BOOST_BEAST_IMPL_READ_SIZE_HPP
#define BOOST_BEAST_IMPL_READ_SIZE_HPP
+#include
#include
#include
#include
diff --git a/include/boost/beast/core/ostream.hpp b/include/boost/beast/core/ostream.hpp
index 9daabea6..852ce6eb 100644
--- a/include/boost/beast/core/ostream.hpp
+++ b/include/boost/beast/core/ostream.hpp
@@ -11,7 +11,6 @@
#define BOOST_BEAST_WRITE_OSTREAM_HPP
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/core/read_size.hpp b/include/boost/beast/core/read_size.hpp
index 96324154..683d5059 100644
--- a/include/boost/beast/core/read_size.hpp
+++ b/include/boost/beast/core/read_size.hpp
@@ -11,7 +11,6 @@
#define BOOST_BEAST_READ_SIZE_HELPER_HPP
#include
-#include
#include
namespace boost {
diff --git a/include/boost/beast/core/type_traits.hpp b/include/boost/beast/core/type_traits.hpp
index a84d2879..d42123cf 100644
--- a/include/boost/beast/core/type_traits.hpp
+++ b/include/boost/beast/core/type_traits.hpp
@@ -10,40 +10,32 @@
#ifndef BOOST_BEAST_TYPE_TRAITS_HPP
#define BOOST_BEAST_TYPE_TRAITS_HPP
-#include
+#ifndef BOOST_BEAST_DOXYGEN
+
+BOOST_PRAGMA_MESSAGE(" is DEPRECATED and will be removed in a future release.")
+
#include
+#include
#include
-#include
-#include
-#include
+#include
+#include
namespace boost {
namespace beast {
-//------------------------------------------------------------------------------
-//
-// Handler concepts
-//
-//------------------------------------------------------------------------------
-
/** Determine if `T` meets the requirements of @b CompletionHandler.
-
This trait checks whether a type meets the requirements for a completion
handler, and is also callable with the specified signature.
Metafunctions are used to perform compile time checking of template
types. This type will be `std::true_type` if `T` meets the requirements,
else the type will be `std::false_type`.
-
@par Example
-
Use with `static_assert`:
-
@code
struct handler
{
void operator()(error_code&);
};
-
static_assert(is_completion_handler::value,
"Not a completion handler");
@endcode
@@ -61,3 +53,5 @@ using is_completion_handler = std::integral_constant
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/detail/chunk_encode.hpp b/include/boost/beast/http/detail/chunk_encode.hpp
index e109bd5a..a3c95ca6 100644
--- a/include/boost/beast/http/detail/chunk_encode.hpp
+++ b/include/boost/beast/http/detail/chunk_encode.hpp
@@ -10,7 +10,6 @@
#ifndef BOOST_BEAST_HTTP_DETAIL_CHUNK_ENCODE_HPP
#define BOOST_BEAST_HTTP_DETAIL_CHUNK_ENCODE_HPP
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/impl/basic_parser.ipp b/include/boost/beast/http/impl/basic_parser.ipp
index bd57fcbc..9404ca77 100644
--- a/include/boost/beast/http/impl/basic_parser.ipp
+++ b/include/boost/beast/http/impl/basic_parser.ipp
@@ -12,7 +12,6 @@
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/impl/file_body_win32.ipp b/include/boost/beast/http/impl/file_body_win32.ipp
index 5c59ad26..cb3f8c79 100644
--- a/include/boost/beast/http/impl/file_body_win32.ipp
+++ b/include/boost/beast/http/impl/file_body_win32.ipp
@@ -15,7 +15,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/impl/write.ipp b/include/boost/beast/http/impl/write.ipp
index 4e957f46..1dd0a1cc 100644
--- a/include/boost/beast/http/impl/write.ipp
+++ b/include/boost/beast/http/impl/write.ipp
@@ -16,7 +16,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/serializer.hpp b/include/boost/beast/http/serializer.hpp
index df7a7745..73ad68f1 100644
--- a/include/boost/beast/http/serializer.hpp
+++ b/include/boost/beast/http/serializer.hpp
@@ -15,7 +15,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/http/type_traits.hpp b/include/boost/beast/http/type_traits.hpp
index ca653649..cbe1751c 100644
--- a/include/boost/beast/http/type_traits.hpp
+++ b/include/boost/beast/http/type_traits.hpp
@@ -13,7 +13,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/close.hpp b/include/boost/beast/websocket/impl/close.hpp
index a61ed570..c40d27c0 100644
--- a/include/boost/beast/websocket/impl/close.hpp
+++ b/include/boost/beast/websocket/impl/close.hpp
@@ -15,7 +15,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/handshake.hpp b/include/boost/beast/websocket/impl/handshake.hpp
index 247be2fc..07481b79 100644
--- a/include/boost/beast/websocket/impl/handshake.hpp
+++ b/include/boost/beast/websocket/impl/handshake.hpp
@@ -17,7 +17,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/ping.hpp b/include/boost/beast/websocket/impl/ping.hpp
index 72307991..a160ed1a 100644
--- a/include/boost/beast/websocket/impl/ping.hpp
+++ b/include/boost/beast/websocket/impl/ping.hpp
@@ -13,7 +13,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/read.hpp b/include/boost/beast/websocket/impl/read.hpp
index 05e019c7..facc5981 100644
--- a/include/boost/beast/websocket/impl/read.hpp
+++ b/include/boost/beast/websocket/impl/read.hpp
@@ -19,7 +19,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/stream.hpp b/include/boost/beast/websocket/impl/stream.hpp
index 2fa96914..2585021a 100644
--- a/include/boost/beast/websocket/impl/stream.hpp
+++ b/include/boost/beast/websocket/impl/stream.hpp
@@ -23,7 +23,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/include/boost/beast/websocket/impl/teardown.hpp b/include/boost/beast/websocket/impl/teardown.hpp
index eebf9796..294516e8 100644
--- a/include/boost/beast/websocket/impl/teardown.hpp
+++ b/include/boost/beast/websocket/impl/teardown.hpp
@@ -13,7 +13,7 @@
#include
#include
#include
-#include
+#include
#include
#include
#include
@@ -168,7 +168,7 @@ async_teardown(
net::ip::tcp::socket& socket,
TeardownHandler&& handler)
{
- static_assert(beast::is_completion_handler<
+ static_assert(beast::detail::is_invocable<
TeardownHandler, void(error_code)>::value,
"TeardownHandler requirements not met");
detail::teardown_tcp_op
#include
#include
-#include
#include
#include
#include
diff --git a/test/beast/core/CMakeLists.txt b/test/beast/core/CMakeLists.txt
index d52f233b..5be94c3d 100644
--- a/test/beast/core/CMakeLists.txt
+++ b/test/beast/core/CMakeLists.txt
@@ -65,7 +65,6 @@ add_executable (tests-beast-core
string.cpp
string_param.cpp
timeout_stream.cpp
- type_traits.cpp
)
set_property(TARGET tests-beast-core PROPERTY FOLDER "tests")
diff --git a/test/beast/core/Jamfile b/test/beast/core/Jamfile
index c5287237..18d4d0f1 100644
--- a/test/beast/core/Jamfile
+++ b/test/beast/core/Jamfile
@@ -53,7 +53,6 @@ local SOURCES =
string.cpp
string_param.cpp
timeout_stream.cpp
- type_traits.cpp
;
local RUN_TESTS ;
diff --git a/test/beast/core/buffer_test.hpp b/test/beast/core/buffer_test.hpp
index f2378145..2e0a4b9d 100644
--- a/test/beast/core/buffer_test.hpp
+++ b/test/beast/core/buffer_test.hpp
@@ -16,7 +16,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/test/beast/core/buffers_prefix.cpp b/test/beast/core/buffers_prefix.cpp
index bc2b655f..641b0b31 100644
--- a/test/beast/core/buffers_prefix.cpp
+++ b/test/beast/core/buffers_prefix.cpp
@@ -14,7 +14,6 @@
#include
#include
-#include
#include
#include
diff --git a/test/beast/core/file_posix.cpp b/test/beast/core/file_posix.cpp
index e2e806c1..82568590 100644
--- a/test/beast/core/file_posix.cpp
+++ b/test/beast/core/file_posix.cpp
@@ -14,7 +14,6 @@
#include "file_test.hpp"
-#include
#include
namespace boost {
diff --git a/test/beast/core/file_stdio.cpp b/test/beast/core/file_stdio.cpp
index 281a89d2..2fb494f2 100644
--- a/test/beast/core/file_stdio.cpp
+++ b/test/beast/core/file_stdio.cpp
@@ -12,7 +12,6 @@
#include "file_test.hpp"
-#include
#include
namespace boost {
diff --git a/test/beast/core/file_win32.cpp b/test/beast/core/file_win32.cpp
index ef5eaf7e..9b792a65 100644
--- a/test/beast/core/file_win32.cpp
+++ b/test/beast/core/file_win32.cpp
@@ -14,7 +14,6 @@
#include "file_test.hpp"
-#include
#include
namespace boost {
diff --git a/test/beast/core/multi_buffer.cpp b/test/beast/core/multi_buffer.cpp
index 93b92cf3..eaf73040 100644
--- a/test/beast/core/multi_buffer.cpp
+++ b/test/beast/core/multi_buffer.cpp
@@ -16,7 +16,6 @@
#include
#include
#include
-#include
#include
#include
#include
diff --git a/test/beast/core/stream_traits.cpp b/test/beast/core/stream_traits.cpp
index d1aed4aa..e1acaa8f 100644
--- a/test/beast/core/stream_traits.cpp
+++ b/test/beast/core/stream_traits.cpp
@@ -12,7 +12,6 @@
#include
#include
-#include
#include
namespace boost {
diff --git a/test/beast/core/type_traits.cpp b/test/beast/core/type_traits.cpp
deleted file mode 100644
index 23fe51c4..00000000
--- a/test/beast/core/type_traits.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot 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)
-//
-// Official repository: https://github.com/boostorg/beast
-//
-
-// Test that header file is self-contained.
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-namespace boost {
-namespace beast {
-
-//
-// handler concepts
-//
-
-namespace {
-
-struct H
-{
- void operator()(int){}
-};
-
-} // anonymous
-
-BOOST_STATIC_ASSERT(is_completion_handler::value);
-BOOST_STATIC_ASSERT(! is_completion_handler::value);
-
-} // beast
-} // boost
diff --git a/test/bench/parser/nodejs_parser.hpp b/test/bench/parser/nodejs_parser.hpp
index d94a2933..98904293 100644
--- a/test/bench/parser/nodejs_parser.hpp
+++ b/test/bench/parser/nodejs_parser.hpp
@@ -16,7 +16,6 @@
#include
#include
#include
-#include
#include
#include
#include