ideas
ideas copied to clipboard
Опциональные члены шаблонного класса по requires
<Описание вашей идеи> Уже есть возможность определять функцию для шаблонного класса, только если какое-то выражение удовлетворяет requires clause:
double get_sample() const
requires requires (const T& t) { t.get_sample(); }
{
return t.get_sample();
}
Нужно иметь возможность делать так же для членов класса, то есть иметь или не иметь данное поле согласно условию:
template<typename T>
class Sampler {
// ...
private:
double sample_ requires requires (const T& t) { t.get_sample(); };
int kek_ requires std::integral<T>;
}
<Примеры, где ваша идея будет полезна. Чем больше примеров и чем большую аудиторию они охватывают - тем лучше> Везде, где из-за свойств шаблонной сущности меняется размер класса. Например делетеры в умных указателях (а-ля std::unique_ptr). Или отсутствие поля "size", если он указан в шаблоне (а-ля std::span).