\hypertarget{structefl_1_1eina_1_1optional}{}\section{efl\+:\+:eina\+:\+:optional$<$ T $>$ Struct Template Reference}
\label{structefl_1_1eina_1_1optional}\index{efl\+::eina\+::optional$<$ T $>$@{efl\+::eina\+::optional$<$ T $>$}}


This class manages an optional contained value, i.\+e.  


\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef \hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}
\begin{DoxyCompactList}\small\item\em Type for the optional class itself. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
constexpr \hyperlink{structefl_1_1eina_1_1optional_aa80f300a71aaff8647d851747ce2d1b1}{optional} (std\+::nullptr\+\_\+t)
\begin{DoxyCompactList}\small\item\em Create a disengaged object. \end{DoxyCompactList}\item 
constexpr \hyperlink{structefl_1_1eina_1_1optional_a4b82e7baf63f12b68c055635330b6b76}{optional} ()
\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_a30aaf14bfc64d0bbd5992fd6dc101366}{optional} (T \&\&other)
\begin{DoxyCompactList}\small\item\em Create an engaged object by moving {\ttfamily other} content. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_ad937cc308ae5f9edaa07b18648ec7a76}{optional} (T const \&other)
\begin{DoxyCompactList}\small\item\em Create an engaged object by copying {\ttfamily other} content. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\\hyperlink{structefl_1_1eina_1_1optional_acebb09a960f244d2d08b445ebd06878e}{optional} (U \&\&other, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Create an engaged object by moving {\ttfamily other} content. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\\hyperlink{structefl_1_1eina_1_1optional_a0f9a580ee21bf53e03a8c076ed74eee3}{optional} (U const \&other, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Create an engaged object by copying {\ttfamily other} content. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_adbb1b3dbed720694355ab3208ecaca95}{optional} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ const \&other)
\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_a748fc4808c86ace395490e9b85748080}{optional} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&\&other)
\begin{DoxyCompactList}\small\item\em Move constructor. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\\hyperlink{structefl_1_1eina_1_1optional_a3f092cd46d1b5ef1de0a5d8e49a1954c}{optional} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ \&\&other, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Move constructor. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\\hyperlink{structefl_1_1eina_1_1optional_a7c87d4f6333989da07c7dae818a7163f}{optional} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ const \&other, typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$=0)
\begin{DoxyCompactList}\small\item\em Copy constructor. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type} \& \hyperlink{structefl_1_1eina_1_1optional_a11375e25a6f90d400fc22c11a18d3884}{operator=} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&\&other)
\begin{DoxyCompactList}\small\item\em Assign new content to the object. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type} \& \hyperlink{structefl_1_1eina_1_1optional_accf25e78585afad0de916ea94e7f6521}{operator=} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$const \&other)
\begin{DoxyCompactList}\small\item\em Assign new content to the object. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value}, \hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type} $>$\+::type \& \hyperlink{structefl_1_1eina_1_1optional_a642a866068a2ab157bcee249013b3851}{operator=} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ \&\&other)
\begin{DoxyCompactList}\small\item\em Assign new content to the object. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename U $>$ }\\std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value}, \hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type} $>$\+::type \& \hyperlink{structefl_1_1eina_1_1optional_ac3254dc387228aa0227c6e9c8f75463d}{operator=} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$const \&other)
\begin{DoxyCompactList}\small\item\em Assign new content to the object. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}\label{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}} 
void \hyperlink{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}{disengage} ()
\begin{DoxyCompactList}\small\item\em Disengage the object, destroying the current contained value, if any. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}\label{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}} 
\hyperlink{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}{$\sim$optional} ()
\begin{DoxyCompactList}\small\item\em Releases the contained value if the object is engaged. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_ae155dedd67027c850081a00e294c8835}{operator bool} () const
\begin{DoxyCompactList}\small\item\em Convert to {\ttfamily bool} based on whether the object is engaged or not. \end{DoxyCompactList}\item 
bool \hyperlink{structefl_1_1eina_1_1optional_a6554765b0ebeb32fb0c50a7beaeda1cc}{operator!} () const
\begin{DoxyCompactList}\small\item\em Convert to {\ttfamily bool} based on whether the object is engaged or not. \end{DoxyCompactList}\item 
T $\ast$ \hyperlink{structefl_1_1eina_1_1optional_a2ef8bb53a1763b9d96901f38e012fcd0}{operator-\/$>$} ()
\begin{DoxyCompactList}\small\item\em Access member of the contained value. \end{DoxyCompactList}\item 
T const  $\ast$ \hyperlink{structefl_1_1eina_1_1optional_ae02091a8a82e38afeeb23bd0583207d4}{operator-\/$>$} () const
\begin{DoxyCompactList}\small\item\em Access constant member of the contained value. \end{DoxyCompactList}\item 
T \& \hyperlink{structefl_1_1eina_1_1optional_ae3f29a324294058d74eb1ff3cb7b279f}{operator$\ast$} ()
\begin{DoxyCompactList}\small\item\em Get the contained value. \end{DoxyCompactList}\item 
T const  \& \hyperlink{structefl_1_1eina_1_1optional_ac20934dd94fcbba875086995869843ed}{operator$\ast$} () const
\begin{DoxyCompactList}\small\item\em Get the contained value. \end{DoxyCompactList}\item 
T \& \hyperlink{structefl_1_1eina_1_1optional_af65b103d73b7781d670b03373a55a67f}{get} ()
\begin{DoxyCompactList}\small\item\em Get the contained value. \end{DoxyCompactList}\item 
T const  \& \hyperlink{structefl_1_1eina_1_1optional_af1e72622218d30a865c62f92e38d9f02}{get} () const
\begin{DoxyCompactList}\small\item\em Get the contained value. \end{DoxyCompactList}\item 
void \hyperlink{structefl_1_1eina_1_1optional_a306225b31873373d3368cb0a39b5dbb3}{swap} (\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&other)
\begin{DoxyCompactList}\small\item\em Swap content with another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object. \end{DoxyCompactList}\item 
bool \hyperlink{structefl_1_1eina_1_1optional_abfbf0deb1063c82a8c4b8b5ef6c831c1}{is\+\_\+engaged} () const
\begin{DoxyCompactList}\small\item\em Check if the object is engaged. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename T$>$\newline
struct efl\+::eina\+::optional$<$ T $>$}

This class manages an optional contained value, i.\+e. 

a value that semantically may not be present.

A common use case for optional is the return value of a function that may fail. As opposed to other approaches, such as {\ttfamily std\+::pair$<$\+T,bool$>$}, optional handles expensive to construct objects well and is more readable, as the intent is expressed explicitly.

An optional object holding a semantically present value is considered to be {\itshape engaged}, otherwise it is considered to be {\itshape disengaged}. 

\subsection{Member Typedef Documentation}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}\label{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!\+\_\+self\+\_\+type@{\+\_\+self\+\_\+type}}
\index{\+\_\+self\+\_\+type@{\+\_\+self\+\_\+type}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{\+\_\+self\+\_\+type}{\_self\_type}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
typedef \hyperlink{structefl_1_1eina_1_1optional}{optional}$<$T$>$ \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}}



Type for the optional class itself. 



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_aa80f300a71aaff8647d851747ce2d1b1}\label{structefl_1_1eina_1_1optional_aa80f300a71aaff8647d851747ce2d1b1}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [1/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
constexpr \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{std\+::nullptr\+\_\+t}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create a disengaged object. 

This constructor creates a disengaged {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a4b82e7baf63f12b68c055635330b6b76}\label{structefl_1_1eina_1_1optional_a4b82e7baf63f12b68c055635330b6b76}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [2/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
constexpr \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Default constructor. 

Create a disengaged object. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a30aaf14bfc64d0bbd5992fd6dc101366}\label{structefl_1_1eina_1_1optional_a30aaf14bfc64d0bbd5992fd6dc101366}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [3/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{T \&\&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create an engaged object by moving {\ttfamily other} content. 


\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to the desired type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object in an engaged state. The contained value is initialized by moving {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_ad937cc308ae5f9edaa07b18648ec7a76}\label{structefl_1_1eina_1_1optional_ad937cc308ae5f9edaa07b18648ec7a76}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [4/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{T const \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create an engaged object by copying {\ttfamily other} content. 


\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to the desired type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object in an engaged state. The contained value is initialized by copying {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_acebb09a960f244d2d08b445ebd06878e}\label{structefl_1_1eina_1_1optional_acebb09a960f244d2d08b445ebd06878e}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [5/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{U \&\&}]{other,  }\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$}]{ = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create an engaged object by moving {\ttfamily other} content. 


\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to the desired type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object in an engaged state. The contained value is initialized by moving {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a0f9a580ee21bf53e03a8c076ed74eee3}\label{structefl_1_1eina_1_1optional_a0f9a580ee21bf53e03a8c076ed74eee3}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [6/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{U const \&}]{other,  }\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$}]{ = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Create an engaged object by copying {\ttfamily other} content. 


\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to the desired type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object in an engaged state. The contained value is initialized by copying {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_adbb1b3dbed720694355ab3208ecaca95}\label{structefl_1_1eina_1_1optional_adbb1b3dbed720694355ab3208ecaca95}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [7/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ const \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Copy constructor. 

Create an object containing the same value as {\ttfamily other} and in the same state. 
\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds the same value type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object with the same engagement state of {\ttfamily other}. If {\ttfamily other} is engaged then the contained value of the newly created object is initialized by copying the contained value of {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a748fc4808c86ace395490e9b85748080}\label{structefl_1_1eina_1_1optional_a748fc4808c86ace395490e9b85748080}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [8/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&\&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Move constructor. 

Create an object containing the same value as {\ttfamily other} and in the same state. 
\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds the same value type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object with the same engagement state of {\ttfamily other}. If {\ttfamily other} is engaged then the contained value of the newly created object is initialized by moving the contained value of {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a3f092cd46d1b5ef1de0a5d8e49a1954c}\label{structefl_1_1eina_1_1optional_a3f092cd46d1b5ef1de0a5d8e49a1954c}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [9/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ \&\&}]{other,  }\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$}]{ = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Move constructor. 

Create an object containing the same value as {\ttfamily other} and in the same state. 
\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds a different, but convertible, value type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object with the same engagement state of {\ttfamily other}. If {\ttfamily other} is engaged then the contained value of the newly created object is initialized by moving the contained value of {\ttfamily other}. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_a7c87d4f6333989da07c7dae818a7163f}\label{structefl_1_1eina_1_1optional_a7c87d4f6333989da07c7dae818a7163f}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!optional@{optional}}
\index{optional@{optional}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{optional()}{optional()}\hspace{0.1cm}{\footnotesize\ttfamily [10/10]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::\hyperlink{structefl_1_1eina_1_1optional}{optional} (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ const \&}]{other,  }\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::\hyperlink{classefl_1_1eina_1_1value}{value} $>$\+::type $\ast$}]{ = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Copy constructor. 

Create an object containing the same value as {\ttfamily other} and in the same state. 
\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds a different, but convertible, value type.\\
\hline
\end{DoxyParams}
This constructor creates an {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object with the same engagement state of {\ttfamily other}. If {\ttfamily other} is engaged then the contained value of the newly created object is initialized by converting and copying the contained value of {\ttfamily other}. 

References efl\+::eina\+::optional$<$ T $>$\+::is\+\_\+engaged().



\subsection{Member Function Documentation}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a11375e25a6f90d400fc22c11a18d3884}\label{structefl_1_1eina_1_1optional_a11375e25a6f90d400fc22c11a18d3884}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&\&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Assign new content to the object. 


\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds the same value type.\\
\hline
\end{DoxyParams}
This operator replaces the current content of the object. If {\ttfamily other} is engaged its contained value is moved to this object, making {\ttfamily $\ast$this} be considered engaged too. If {\ttfamily other} is disengaged {\ttfamily $\ast$this} is also made disengaged and its contained value, if any, is simple destroyed. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_accf25e78585afad0de916ea94e7f6521}\label{structefl_1_1eina_1_1optional_accf25e78585afad0de916ea94e7f6521}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$const \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Assign new content to the object. 


\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds the same value type.\\
\hline
\end{DoxyParams}
This operator replaces the current content of the object. If {\ttfamily other} is engaged its contained value is copied to this object, making {\ttfamily $\ast$this} be considered engaged too. If {\ttfamily other} is disengaged {\ttfamily $\ast$this} is also made disengaged and its contained value, if any, is simple destroyed. 

References efl\+::eina\+::optional$<$ T $>$\+::swap().

\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a642a866068a2ab157bcee249013b3851}\label{structefl_1_1eina_1_1optional_a642a866068a2ab157bcee249013b3851}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
std\+::enable\+\_\+if$<$std\+::is\+\_\+convertible$<$U, T$>$\+::\hyperlink{classefl_1_1eina_1_1value}{value}, \hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}$>$\+::type\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$ \&\&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Assign new content to the object. 


\begin{DoxyParams}{Parameters}
{\em other} & R-\/value reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds a different, but convertible, value type.\\
\hline
\end{DoxyParams}
This operator replaces the current content of the object. If {\ttfamily other} is engaged its contained value is moved to this object, making {\ttfamily $\ast$this} be considered engaged too. If {\ttfamily other} is disengaged {\ttfamily $\ast$this} is also made disengaged and its contained value, if any, is simple destroyed. \mbox{\Hypertarget{structefl_1_1eina_1_1optional_ac3254dc387228aa0227c6e9c8f75463d}\label{structefl_1_1eina_1_1optional_ac3254dc387228aa0227c6e9c8f75463d}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator=@{operator=}}
\index{operator=@{operator=}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
template$<$typename U $>$ \\
std\+::enable\+\_\+if$<$std\+::is\+\_\+convertible$<$U, T$>$\+::\hyperlink{classefl_1_1eina_1_1value}{value}, \hyperlink{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}{\+\_\+self\+\_\+type}$>$\+::type\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ U $>$const \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Assign new content to the object. 


\begin{DoxyParams}{Parameters}
{\em other} & Constant reference to another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object that holds a different, but convertible, value type.\\
\hline
\end{DoxyParams}
This operator replaces the current content of the object. If {\ttfamily other} is engaged its contained value is converted and copied to this object, making {\ttfamily $\ast$this} be considered engaged too. If {\ttfamily other} is disengaged {\ttfamily $\ast$this} is also made disengaged and its contained value, if any, is simple destroyed. 

References efl\+::eina\+::optional$<$ T $>$\+::is\+\_\+engaged().

\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ae155dedd67027c850081a00e294c8835}\label{structefl_1_1eina_1_1optional_ae155dedd67027c850081a00e294c8835}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator bool@{operator bool}}
\index{operator bool@{operator bool}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator bool()}{operator bool()}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
\hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator bool (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}



Convert to {\ttfamily bool} based on whether the object is engaged or not. 

\begin{DoxyReturn}{Returns}
{\ttfamily true} if the object is engaged, {\ttfamily false} otherwise. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a6554765b0ebeb32fb0c50a7beaeda1cc}\label{structefl_1_1eina_1_1optional_a6554765b0ebeb32fb0c50a7beaeda1cc}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator"!@{operator"!}}
\index{operator"!@{operator"!}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator"!()}{operator!()}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
bool \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator! (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Convert to {\ttfamily bool} based on whether the object is engaged or not. 

\begin{DoxyReturn}{Returns}
{\ttfamily true} if the object is disengaged, {\ttfamily false} otherwise. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a2ef8bb53a1763b9d96901f38e012fcd0}\label{structefl_1_1eina_1_1optional_a2ef8bb53a1763b9d96901f38e012fcd0}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator-\/$>$@{operator-\/$>$}}
\index{operator-\/$>$@{operator-\/$>$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T$\ast$ \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Access member of the contained value. 

\begin{DoxyReturn}{Returns}
Pointer to the contained value, whose member will be accessed. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ae02091a8a82e38afeeb23bd0583207d4}\label{structefl_1_1eina_1_1optional_ae02091a8a82e38afeeb23bd0583207d4}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator-\/$>$@{operator-\/$>$}}
\index{operator-\/$>$@{operator-\/$>$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T const$\ast$ \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Access constant member of the contained value. 

\begin{DoxyReturn}{Returns}
Constant pointer to the contained value, whose member will be accessed. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ae3f29a324294058d74eb1ff3cb7b279f}\label{structefl_1_1eina_1_1optional_ae3f29a324294058d74eb1ff3cb7b279f}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the contained value. 

\begin{DoxyReturn}{Returns}
Reference to the contained value. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_ac20934dd94fcbba875086995869843ed}\label{structefl_1_1eina_1_1optional_ac20934dd94fcbba875086995869843ed}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T const\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the contained value. 

\begin{DoxyReturn}{Returns}
Constant reference to the contained value. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_af65b103d73b7781d670b03373a55a67f}\label{structefl_1_1eina_1_1optional_af65b103d73b7781d670b03373a55a67f}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!get@{get}}
\index{get@{get}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the contained value. 

\begin{DoxyReturn}{Returns}
Reference to the contained value. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_af1e72622218d30a865c62f92e38d9f02}\label{structefl_1_1eina_1_1optional_af1e72622218d30a865c62f92e38d9f02}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!get@{get}}
\index{get@{get}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
T const\& \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the contained value. 

\begin{DoxyReturn}{Returns}
Constant reference to the contained value. 
\end{DoxyReturn}
\mbox{\Hypertarget{structefl_1_1eina_1_1optional_a306225b31873373d3368cb0a39b5dbb3}\label{structefl_1_1eina_1_1optional_a306225b31873373d3368cb0a39b5dbb3}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!swap@{swap}}
\index{swap@{swap}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{swap()}{swap()}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
void \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::swap (\begin{DoxyParamCaption}\item[{\hyperlink{structefl_1_1eina_1_1optional}{optional}$<$ T $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Swap content with another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object. 


\begin{DoxyParams}{Parameters}
{\em other} & Another {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object. \\
\hline
\end{DoxyParams}


References efl\+::eina\+::optional$<$ T $>$\+::is\+\_\+engaged().



Referenced by efl\+::eina\+::optional$<$ T $>$\+::operator=(), and efl\+::eina\+::swap().

\mbox{\Hypertarget{structefl_1_1eina_1_1optional_abfbf0deb1063c82a8c4b8b5ef6c831c1}\label{structefl_1_1eina_1_1optional_abfbf0deb1063c82a8c4b8b5ef6c831c1}} 
\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!is\+\_\+engaged@{is\+\_\+engaged}}
\index{is\+\_\+engaged@{is\+\_\+engaged}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection{\texorpdfstring{is\+\_\+engaged()}{is\_engaged()}}
{\footnotesize\ttfamily template$<$typename T$>$ \\
bool \hyperlink{structefl_1_1eina_1_1optional}{efl\+::eina\+::optional}$<$ T $>$\+::is\+\_\+engaged (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Check if the object is engaged. 

\begin{DoxyReturn}{Returns}
{\ttfamily true} if the object is currently engaged, {\ttfamily false} otherwise. 
\end{DoxyReturn}


Referenced by efl\+::eina\+::optional$<$ T $>$\+::operator=(), efl\+::eina\+::optional$<$ T $>$\+::optional(), and efl\+::eina\+::optional$<$ T $>$\+::swap().

