posix/except: add try_call
This commit is contained in:
parent
4fd20d2acf
commit
2ad86d28a5
@ -7,9 +7,9 @@
|
||||
* Danny Robson <danny@nerdcruft.net>
|
||||
*/
|
||||
|
||||
#ifndef CRUFT_UTIL_POSIX_EXCEPT_HPP
|
||||
#define CRUFT_UTIL_POSIX_EXCEPT_HPP
|
||||
#pragma once
|
||||
|
||||
#include <functional>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace cruft::posix {
|
||||
@ -25,6 +25,18 @@ namespace cruft::posix {
|
||||
int code (void) const;
|
||||
static int last_code (void);
|
||||
|
||||
template <typename FunctionT, typename ...Args>
|
||||
static auto
|
||||
try_call (FunctionT &&func, Args&& ...args)
|
||||
{
|
||||
return try_value (
|
||||
std::invoke (
|
||||
std::forward<FunctionT> (func),
|
||||
std::forward<Args> (args)...
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
static void try_code (void);
|
||||
static void try_code (int code);
|
||||
|
||||
@ -67,5 +79,3 @@ namespace cruft::posix {
|
||||
int m_code;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user