1#ifndef _BBM_LOSS_PTR_H_
2#define _BBM_LOSS_PTR_H_
26 template<
typename CONF>
requires concepts::config<CONF>
50 inline const std::shared_ptr<loss_base<Config>>&
ptr(
void)
const {
return _loss; }
53 inline const std::shared_ptr<loss_base<Config>>&
operator->(
void)
59 inline std::shared_ptr<const loss_base<Config>>
operator->(
void)
const
69 virtual void update(
void)
override final
80 virtual Value
operator()(Mask mask=
true) const override final
82 return (*this)->operator()(mask);
89 std::shared_ptr<loss_base<Config>>
_loss;
107 auto ptr = std::make_shared<LOSSTYPE>(std::forward<ARGS>(
args)...);
120 template<
typename LOSSFUNC,
typename... ARGS>
requires (concepts::lossfunction<LOSSFUNC> && !concepts::loss<LOSSFUNC>)
123 auto ptr = std::make_shared<loss<LOSSFUNC>>(std::forward<ARGS>(
args)...);
134 template<
typename LOSSTYPE>
requires (concepts::loss<LOSSTYPE> && !concepts::loss_ptr<LOSSTYPE>)
137 auto ptr = std::make_shared<LOSSTYPE>(
arg);
149 template<
typename LOSSFUNC>
requires (concepts::lossfunction<LOSSFUNC> && !concepts::loss<LOSSFUNC>)
152 auto ptr = std::make_shared<loss<LOSSFUNC>>(
arg);
161 template<
typename CONF>
requires concepts::config<CONF>
Connects a lossfunction with a loss.
loss_ptr: a wrapper around a shared_ptr to a loss
Definition: loss_ptr.h:28
loss_ptr & operator=(const loss_ptr &src)
Assignment operator.
Definition: loss_ptr.h:43
loss_ptr(void)=default
Default (empty) constructor; shared_ptr is set to nullptr.
virtual Value operator()(Mask mask=true) const override final
Pointer-dereference passthrough of the loss evaluation operator()
Definition: loss_ptr.h:80
const std::shared_ptr< loss_base< Config > > & ptr(void) const
Get the interal shared pointer.
Definition: loss_ptr.h:50
std::shared_ptr< loss_base< Config > > _loss
Definition: loss_ptr.h:89
loss_ptr(const loss_ptr &src)
Copy constructor.
Definition: loss_ptr.h:40
std::shared_ptr< const loss_base< Config > > operator->(void) const
Definition: loss_ptr.h:59
loss_ptr(const std::shared_ptr< LOSSTYPE > &ptr)
Construct from shared_ptr.
Definition: loss_ptr.h:37
const std::shared_ptr< loss_base< Config > > & operator->(void)
Definition: loss_ptr.h:53
virtual void update(void) override final
Pointer-dereference passthrough of the update method.
Definition: loss_ptr.h:69
loss_ptr concept
Definition: loss_ptr.h:24
loss concept
Definition: loss.h:29
Predefined exceptions for common errors.
#define bbm_incomplete_init
Definition: error.h:42
Macros for checking if a class meets a concept.
#define BBM_CHECK_CONCEPT(CONCEPTNAME, CLASSNAME,...)
Check a class for a concept with bbm::concepts::archetypes in the namespace.
Definition: macro.h:35
Definition: aggregatebsdf.h:29
loss_ptr< get_config< LOSSTYPE > > make_loss_ptr(ARGS &&... args)
Helper method for making loss_ptr from a LOSS (new construction)
Definition: loss_ptr.h:105
typename std::decay_t< T >::Config get_config
get_config type trait
Definition: config.h:49
Forward declaration of bbm::arg.
Definition: arg.h:27
Forward declaration.
Definition: args.h:248
Forward declaration.
Definition: loss_base.h:29