From 69188a5a68b649d35976a3a2bc7de030aa59fbc9 Mon Sep 17 00:00:00 2001 From: ruben Date: Sat, 28 Mar 2020 14:37:07 +0000 Subject: [PATCH] Fixed exception specifications for value_holder --- include/boost/mysql/async_handler_arg.hpp | 2 ++ include/boost/mysql/detail/protocol/value_holder.hpp | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/boost/mysql/async_handler_arg.hpp b/include/boost/mysql/async_handler_arg.hpp index 22c98ad1..f00be70b 100644 --- a/include/boost/mysql/async_handler_arg.hpp +++ b/include/boost/mysql/async_handler_arg.hpp @@ -12,6 +12,8 @@ class async_handler_arg error_info err_; T value_; public: + using value_type = T; + constexpr async_handler_arg() noexcept = default; constexpr async_handler_arg(error_info&& info): diff --git a/include/boost/mysql/detail/protocol/value_holder.hpp b/include/boost/mysql/detail/protocol/value_holder.hpp index b7fc51af..244ea66d 100644 --- a/include/boost/mysql/detail/protocol/value_holder.hpp +++ b/include/boost/mysql/detail/protocol/value_holder.hpp @@ -2,6 +2,7 @@ #define INCLUDE_BOOST_MYSQL_DETAIL_PROTOCOL_VALUE_HOLDER_HPP_ #include +#include namespace boost { namespace mysql { @@ -11,13 +12,16 @@ template struct value_holder { using value_type = T; + static_assert(std::is_nothrow_default_constructible_v); value_type value; - value_holder(): value{} {}; + value_holder() noexcept: value{} {}; template - explicit constexpr value_holder(U&& u): value(std::forward(u)) {} + explicit constexpr value_holder(U&& u) + noexcept(std::is_nothrow_constructible_v): + value(std::forward(u)) {} constexpr bool operator==(const value_holder& rhs) const { return value == rhs.value; } constexpr bool operator!=(const value_holder& rhs) const { return value != rhs.value; }