Loading...
Searching...
No Matches
bbm::concepts::ndf Concept Reference

ndf concept More...

#include <ndf.h>

Concept definition

template<typename NDF>
concept bbm::concepts::ndf = requires(const NDF& ndf)
{
{ ndf.eval(std::declval<Vec3d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
{ ndf.eval(std::declval<Vec3d_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
{ ndf.sample(std::declval<Vec3d_t<NDF>>(), std::declval<Vec2d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> std::same_as<Vec3d_t<NDF>>;
{ ndf.sample(std::declval<Vec3d_t<NDF>>(), std::declval<Vec2d_t<NDF>>()) } -> std::same_as<Vec3d_t<NDF>>;
{ ndf.pdf(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> std::same_as<Value_t<NDF>>;
{ ndf.pdf(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>()) } -> std::same_as<Value_t<NDF>>;
{ ndf.G1(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>(), std::declval<Mask_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
{ ndf.G1(std::declval<Vec3d_t<NDF>>(), std::declval<Vec3d_t<NDF>>()) } -> concepts::same_as_any<Value_t<NDF>, Spectrum_t<NDF>>;
}
has_config
Definition: config.h:53
A named class is a class that contains a static constexpr string_literal name.
Definition: named.h:19
ndf concept
Definition: ndf.h:29
true if type is the same as any of the listed types
Definition: util.h:31
typename get_config< T >::Spectrum Spectrum_t
Definition: config.h:68

Detailed Description

ndf concept

Each ndf requires: