Skip to content

src/base/outcome_throw.hpp

Namespaces

Name
sgns
sgns::base

Functions

Name
template <typename T ,typename =std::enable_if_t>>
void
raise(T t)
throws outcome::result error as boost exception
template <typename T ,typename =std::enable_if_t<!std::is_enum_v>>
void
raise(const T & t)
throws outcome::result error made of error as boost exception

Functions Documentation

function raise

template <typename T ,
typename  =std::enable_if_t<std::is_enum_v<T>>>
void raise(
    T t
)

throws outcome::result error as boost exception

Parameters:

  • t error value

Template Parameters:

  • T enum error type, only outcome::result enums are allowed

function raise

template <typename T ,
typename  =std::enable_if_t<!std::is_enum_v<T>>>
void raise(
    const T & t
)

throws outcome::result error made of error as boost exception

Parameters:

  • t outcome error value

Template Parameters:

  • T outcome error type

Source code

#ifndef SUPERGENIUS_SRC_COMMON_OUTCOME_THROW_HPP
#define SUPERGENIUS_SRC_COMMON_OUTCOME_THROW_HPP

#include <boost/system/system_error.hpp>
#include <boost/throw_exception.hpp>

namespace sgns::base {
  template <typename T, typename = std::enable_if_t<std::is_enum_v<T>>>
  void raise(T t) {
    std::error_code ec = make_error_code(t);
    boost::throw_exception(std::system_error(ec));
  }

  template <typename T, typename = std::enable_if_t<!std::is_enum_v<T>>>
  void raise(const T &t) {
    boost::throw_exception(std::system_error(t.value(), t.category()));
  }
}  // namespace sgns::base

#endif  // SUPERGENIUS_SRC_COMMON_OUTCOME_THROW_HPP

Updated on 2026-03-04 at 13:10:44 -0800