template<typename MS>
{
{ std::decay_t<MS>::eval(std::declval<archetype::ndf<get_config<MS>>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>(), std::declval<Vec3d_t<MS>>(), std::declval<Mask_t<MS>>()) } ->
concepts::same_as_any<Value_t<MS>,
Spectrum_t<MS>>;
}
has_config
Definition: config.h:53
maskingshadowing concept
Definition: maskingshadowing.h:24
true if type is the same as any of the listed types
Definition: util.h:31
typename std::decay_t< T >::Config get_config
get_config type trait
Definition: config.h:49
typename get_config< T >::Spectrum Spectrum_t
Definition: config.h:68
maskingshadowing concept
Each Masking-Shadowing requires:
- concepts::has_config
- static Value/Spectrum eval(const NDF&, const Vec3d&, const Vec3d& in, const Vec3d& out, const Vec3d& m, Mask mask=true)