\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 
\hypertarget{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}{}void \hyperlink{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}{disengage} ()\label{structefl_1_1eina_1_1optional_ad1fe724d5e569aea6da1822533aeb017}

\begin{DoxyCompactList}\small\item\em Disengage the object, destroying the current contained value, if any. \end{DoxyCompactList}\item 
\hypertarget{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}{}\hyperlink{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}{$\sim$optional} ()\label{structefl_1_1eina_1_1optional_a0401de388c5e1492d99ec5f081b05c3f}

\begin{DoxyCompactList}\small\item\em Releases the contained value if the object is engaged. \end{DoxyCompactList}\item 
\hyperlink{structefl_1_1eina_1_1optional_a81d2fe31d4f08e8d61e310ca939179c8}{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_a2168178485f9026345a0ba44be3bc163}{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_a765a797b3ea87ae8f299bff7e1131fd8}{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_a290c3c2e1f176a8a6bfd9bd4ce9d0458}{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_a9f044c8e7209ffc52992c46f1b8b4e8d}{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_ab97e73b16a7048ae879bdfa71f642d14}{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$>$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}
\hypertarget{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[{\+\_\+self\+\_\+type}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ typedef {\bf optional}$<$T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf \+\_\+self\+\_\+type}}\label{structefl_1_1eina_1_1optional_ada40e926e129fe08b42bdad17833fab2}


Type for the optional class itself. 



\subsection{Constructor \& Destructor Documentation}
\hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ constexpr {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{std\+::nullptr\+\_\+t}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_aa80f300a71aaff8647d851747ce2d1b1}


Create a disengaged object. 

This constructor creates a disengaged {\ttfamily \hyperlink{structefl_1_1eina_1_1optional}{eina\+::optional}} object. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ constexpr {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a4b82e7baf63f12b68c055635330b6b76}


Default constructor. 

Create a disengaged object. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{T \&\&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a30aaf14bfc64d0bbd5992fd6dc101366}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{T const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_ad937cc308ae5f9edaa07b18648ec7a76}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{U \&\&}]{other, }
\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_acebb09a960f244d2d08b445ebd06878e}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{U const \&}]{other, }
\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a0f9a580ee21bf53e03a8c076ed74eee3}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ T $>$ const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_adbb1b3dbed720694355ab3208ecaca95}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ T $>$ \&\&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a748fc4808c86ace395490e9b85748080}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ U $>$ \&\&}]{other, }
\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a3f092cd46d1b5ef1de0a5d8e49a1954c}


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}. \hypertarget{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[{optional}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::{\bf optional} (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ U $>$ const \&}]{other, }
\item[{typename std\+::enable\+\_\+if$<$ std\+::is\+\_\+convertible$<$ U, T $>$\+::{\bf value} $>$\+::type $\ast$}]{ = {\ttfamily 0}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a7c87d4f6333989da07c7dae818a7163f}


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}
\hypertarget{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[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf \+\_\+self\+\_\+type}\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator= (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ T $>$ \&\&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a11375e25a6f90d400fc22c11a18d3884}


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. \hypertarget{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[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf \+\_\+self\+\_\+type}\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator= (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ T $>$const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_accf25e78585afad0de916ea94e7f6521}


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().

\hypertarget{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[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ std\+::enable\+\_\+if$<$std\+::is\+\_\+convertible$<$U, T$>$\+::{\bf value}, {\bf \+\_\+self\+\_\+type}$>$\+::type\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator= (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ U $>$ \&\&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a642a866068a2ab157bcee249013b3851}


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. \hypertarget{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[{operator=}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ template$<$typename U $>$ std\+::enable\+\_\+if$<$std\+::is\+\_\+convertible$<$U, T$>$\+::{\bf value}, {\bf \+\_\+self\+\_\+type}$>$\+::type\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator= (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ U $>$const \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_ac3254dc387228aa0227c6e9c8f75463d}


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().

\hypertarget{structefl_1_1eina_1_1optional_a81d2fe31d4f08e8d61e310ca939179c8}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator bool@{operator bool}}
\index{operator bool@{operator bool}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{operator bool}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator bool (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}}\label{structefl_1_1eina_1_1optional_a81d2fe31d4f08e8d61e310ca939179c8}


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}
\hypertarget{structefl_1_1eina_1_1optional_a2168178485f9026345a0ba44be3bc163}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator"!@{operator"!}}
\index{operator"!@{operator"!}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{operator"!}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ bool {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator! (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a2168178485f9026345a0ba44be3bc163}


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}
\hypertarget{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[{operator-\/$>$}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T$\ast$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator-\/$>$ (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a2ef8bb53a1763b9d96901f38e012fcd0}


Access member of the contained value. 

\begin{DoxyReturn}{Returns}
Pointer to the contained value, whose member will be accessed. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1optional_a765a797b3ea87ae8f299bff7e1131fd8}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator-\/$>$@{operator-\/$>$}}
\index{operator-\/$>$@{operator-\/$>$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{operator-\/$>$}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T const$\ast$ {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator-\/$>$ (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a765a797b3ea87ae8f299bff7e1131fd8}


Access constant member of the contained value. 

\begin{DoxyReturn}{Returns}
Constant pointer to the contained value, whose member will be accessed. 
\end{DoxyReturn}
\hypertarget{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[{operator$\ast$}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator$\ast$ (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_ae3f29a324294058d74eb1ff3cb7b279f}


Get the contained value. 

\begin{DoxyReturn}{Returns}
Reference to the contained value. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1optional_a290c3c2e1f176a8a6bfd9bd4ce9d0458}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{operator$\ast$}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T const\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::operator$\ast$ (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a290c3c2e1f176a8a6bfd9bd4ce9d0458}


Get the contained value. 

\begin{DoxyReturn}{Returns}
Constant reference to the contained value. 
\end{DoxyReturn}
\hypertarget{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[{get}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::get (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_af65b103d73b7781d670b03373a55a67f}


Get the contained value. 

\begin{DoxyReturn}{Returns}
Reference to the contained value. 
\end{DoxyReturn}
\hypertarget{structefl_1_1eina_1_1optional_a9f044c8e7209ffc52992c46f1b8b4e8d}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!get@{get}}
\index{get@{get}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{get}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ T const\& {\bf efl\+::eina\+::optional}$<$ T $>$\+::get (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a9f044c8e7209ffc52992c46f1b8b4e8d}


Get the contained value. 

\begin{DoxyReturn}{Returns}
Constant reference to the contained value. 
\end{DoxyReturn}
\hypertarget{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[{swap}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ void {\bf efl\+::eina\+::optional}$<$ T $>$\+::swap (
\begin{DoxyParamCaption}
\item[{{\bf optional}$<$ T $>$ \&}]{other}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_a306225b31873373d3368cb0a39b5dbb3}


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().

\hypertarget{structefl_1_1eina_1_1optional_ab97e73b16a7048ae879bdfa71f642d14}{}\index{efl\+::eina\+::optional@{efl\+::eina\+::optional}!is\+\_\+engaged@{is\+\_\+engaged}}
\index{is\+\_\+engaged@{is\+\_\+engaged}!efl\+::eina\+::optional@{efl\+::eina\+::optional}}
\subsubsection[{is\+\_\+engaged}]{\setlength{\rightskip}{0pt plus 5cm}template$<$typename T$>$ bool {\bf efl\+::eina\+::optional}$<$ T $>$\+::is\+\_\+engaged (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}\label{structefl_1_1eina_1_1optional_ab97e73b16a7048ae879bdfa71f642d14}


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().

