ESPHome 2026.4.0
Loading...
Searching...
No Matches
esphome::TemplatableFn< T, X > Class Template Reference

Function-pointer-only templatable storage (4 bytes on 32-bit). More...

#include <automation.h>

Public Member Functions

 TemplatableFn ()=default
 
 TemplatableFn (std::nullptr_t)=delete
 
template<typename F >
requires std::convertible_to<F, T (*)(X...)>
 TemplatableFn (F f)
 
template<typename F >
requires (!std::convertible_to<F, T (*)(X...)>) && std::invocable<F, X...> &&std::convertible_to<std::invoke_result_t<F, X...>, T> &&std::is_empty_v<F> &&std::default_initializable<F>
 TemplatableFn (F)
 
template<typename F >
requires std::invocable<F, X...> && (!std::convertible_to<F, T (*)(X...)>) &&(!std::is_empty_v<F> || !std::convertible_to<std::invoke_result_t<F, X...>, T> || !std::default_initializable<F>)
 TemplatableFn (F)=delete
 
bool has_value () const
 
value (X... x) const
 
optional< T > optional_value (X... x) const
 
value_or (X... x, T default_value) const
 

Protected Attributes

T(* f_ )(X...)
 

Detailed Description

template<typename T, typename... X>
class esphome::TemplatableFn< T, X >

Function-pointer-only templatable storage (4 bytes on 32-bit).

Used by the TEMPLATABLE_VALUE macro for codegen-managed fields. Codegen wraps constants in stateless lambdas so only a function pointer is needed.

Definition at line 40 of file automation.h.

Constructor & Destructor Documentation

◆ TemplatableFn() [1/5]

template<typename T , typename... X>
esphome::TemplatableFn< T, X >::TemplatableFn ( )
default

◆ TemplatableFn() [2/5]

template<typename T , typename... X>
esphome::TemplatableFn< T, X >::TemplatableFn ( std::nullptr_t )
delete

◆ TemplatableFn() [3/5]

template<typename T , typename... X>
template<typename F >
requires std::convertible_to<F, T (*)(X...)>
esphome::TemplatableFn< T, X >::TemplatableFn ( F f)
inline

Definition at line 46 of file automation.h.

◆ TemplatableFn() [4/5]

template<typename T , typename... X>
template<typename F >
requires (!std::convertible_to<F, T (*)(X...)>) && std::invocable<F, X...> &&std::convertible_to<std::invoke_result_t<F, X...>, T> &&std::is_empty_v<F> &&std::default_initializable<F>
esphome::TemplatableFn< T, X >::TemplatableFn ( F )
inline

Definition at line 54 of file automation.h.

◆ TemplatableFn() [5/5]

template<typename T , typename... X>
template<typename F >
requires std::invocable<F, X...> && (!std::convertible_to<F, T (*)(X...)>) &&(!std::is_empty_v<F> || !std::convertible_to<std::invoke_result_t<F, X...>, T> || !std::default_initializable<F>)
esphome::TemplatableFn< T, X >::TemplatableFn ( F )
delete

Member Function Documentation

◆ has_value()

template<typename T , typename... X>
bool esphome::TemplatableFn< T, X >::has_value ( ) const
inline

Definition at line 65 of file automation.h.

◆ optional_value()

template<typename T , typename... X>
optional< T > esphome::TemplatableFn< T, X >::optional_value ( X... x) const
inline

Definition at line 69 of file automation.h.

◆ value()

template<typename T , typename... X>
T esphome::TemplatableFn< T, X >::value ( X... x) const
inline

Definition at line 67 of file automation.h.

◆ value_or()

template<typename T , typename... X>
T esphome::TemplatableFn< T, X >::value_or ( X... x,
T default_value ) const
inline

Definition at line 75 of file automation.h.

Field Documentation

◆ f_

template<typename T , typename... X>
T(* esphome::TemplatableFn< T, X >::f_) (X...)
inlineprotected

Definition at line 78 of file automation.h.


The documentation for this class was generated from the following file: