// // Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 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) // #ifndef BOOST_MYSQL_DETAIL_ACCESS_HPP #define BOOST_MYSQL_DETAIL_ACCESS_HPP #include namespace boost { namespace mysql { namespace detail { // Exposes access to the implementation of public access, which is sometimes // required by library internals. struct access { template static decltype(std::declval().impl_)& get_impl(T& obj) noexcept { return obj.impl_; } template static const decltype(std::declval().impl_)& get_impl(const T& obj) noexcept { return obj.impl_; } template static T construct(Args&&... args) { return T(std::forward(args)...); } }; } // namespace detail } // namespace mysql } // namespace boost #endif