1#ifndef _BBM_CONFIG_CONCEPT_H_
2#define _BBM_CONFIG_CONCEPT_H_
35 typename std::decay_t<T>::Config;
36 typename std::decay_t<T>::Value;
37 typename std::decay_t<T>::Spectrum;
39 { std::decay_t<T>::wavelength() } -> std::same_as<typename std::decay_t<T>::Spectrum>;
42 requires std::same_as<typename std::decay_t<T>::Config, std::decay_t<T>>;
53 concept has_config =
requires {
typename std::decay_t<T>::Config;};
62 template<
typename... U>
63 concept matching_config = (std::same_as<
typename std::decay_t<std::tuple_element_t<0, std::tuple<U...>>>::Config,
typename std::decay_t<U>::Config> && ...);
config concept
Definition: config.h:31
has_config
Definition: config.h:53
matching_config concept
Definition: config.h:63
A named class is a class that contains a static constexpr string_literal name.
Definition: named.h:19
Definition: aggregatebsdf.h:29
bbm::color< float > Spectrum
Definition: config.h:74
static constexpr Spectrum wavelength(void)
static constexpr string_literal name
Definition: config.h:71
float Value
Definition: config.h:73
Definition: string_literal.h:16