1#ifndef _BBM_INOUT_LINEARIZER_CONCEPT_H_
2#define _BBM_INOUT_LINEARIZER_CONCEPT_H_
31 { t.size() } -> std::same_as<Size_t<T>>;
33 { t.operator()(std::declval<Size_t<T>>(), std::declval<Mask_t<T>>()) } -> std::same_as<Vec3dPair_t<T>>;
34 { t.operator()(std::declval<Size_t<T>>()) } -> std::same_as<Vec3dPair_t<T>>;
36 { t.operator()(std::declval<Vec3d_t<T>>(), std::declval<Vec3d_t<T>>(), std::declval<Mask_t<T>>()) } -> std::same_as<Size_t<T>>;
37 { t.operator()(std::declval<Vec3d_t<T>>(), std::declval<Vec3d_t<T>>()) } -> std::same_as<Size_t<T>>;
50 Size_t<Config>
size(
void)
const;
51 Vec3dPair_t<Config>
operator()(
const Size_t<Config>&, Mask_t<Config> =
true)
const;
52 Size_t<Config>
operator()(
const Vec3d_t<Config>&,
const Vec3d_t<Config>&, Mask_t<Config> =
true)
const;
All BBM methods are defined to operate on a variety of value types and spectrum types....
config concept
Definition: config.h:31
has_config
Definition: config.h:53
inout_linearizer concept
Definition: inout_linearizer.h:28
#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
Definition: inout_linearizer.h:48
Size_t< Config > size(void) const
Size_t< Config > operator()(const Vec3d_t< Config > &, const Vec3d_t< Config > &, Mask_t< Config >=true) const
Vec3dPair_t< Config > operator()(const Size_t< Config > &, Mask_t< Config >=true) const
CONF Config
Definition: inout_linearizer.h:49