9 template <
class T,
class =
void>
22 typename std::enable_if<std::is_integral_v<T> && std::is_signed_v<T>>
::type> {
30 template <
class F,
class... Args>
39 template <
class F,
class... Args>
45 return f(std::forward<Args>(args)...);
46 }
catch (
const std::bad_alloc& e) {
47 PyErr_SetString(PyExc_MemoryError, e.what());
48 }
catch (
const std::domain_error& e) {
49 PyErr_SetString(PyExc_ValueError, e.what());
50 }
catch (
const std::invalid_argument& e) {
51 PyErr_SetString(PyExc_ValueError, e.what());
52 }
catch (
const std::length_error& e) {
53 PyErr_SetString(PyExc_ValueError, e.what());
54 }
catch (
const std::out_of_range& e) {
55 PyErr_SetString(PyExc_IndexError, e.what());
56 }
catch (
const std::range_error& e) {
57 PyErr_SetString(PyExc_ValueError, e.what());
58 }
catch (
const std::overflow_error& e) {
59 PyErr_SetString(PyExc_OverflowError, e.what());
60 }
catch (std::exception& e) {
61 PyErr_SetString(PyExc_RuntimeError, e.what());
63 PyErr_SetString(PyExc_Exception,
"Unknown C++ exception.");
static convert_cxx_exceptions_trait< F, Args... >::return_type convert_cxx_exceptions(F f, Args &&... args)
static return_type error_value()
std::invoke_result_t< F, Args... > return_type
static PyObject * value()