// Matrix Construct // // Copyright (C) Matrix Construct Developers, Authors & Contributors // Copyright (C) 2016-2018 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice is present in all copies. The // full license for this software is available in the LICENSE file. #pragma once #define HAVE_IRCD_UTIL_NOTHROW_H // // Template nothrow suite // namespace ircd { inline namespace util { /// Test for template geworfenheit /// template constexpr bool is_nothrow() { return std::is_same::value; } /// This is a template alternative to nothrow overloads, which /// allows keeping the function arguments sanitized of the thrownness. /// template using nothrow_overload = typename std::enable_if(), return_t>::type; /// Inverse of the nothrow_overload template /// template using throw_overload = typename std::enable_if(), return_t>::type; } // namespace util } // namespace ircd