Program Listing for File no_discard.hpp
↰ Return to documentation for file (include/rsl/no_discard.hpp)
#pragma once
#include <utility>
namespace rsl {
template <typename Fn>
class NoDiscard {
static_assert(std::is_invocable_v<Fn()>, "Fn must be invocable");
Fn fn_;
public:
NoDiscard(Fn const& fn) : fn_(fn) {}
template <typename... Ts>
[[nodiscard]] constexpr auto operator()(Ts&&... args) const
noexcept(noexcept(fn_(std::forward<Ts>(args)...))) {
return fn_(std::forward<Ts>(args)...);
}
};
} // namespace rsl