ns a reference type.[9]Semantics[සංස්කරණය]Similarly to the sizeof operator, the operand of decltype is unevaluated.[10] Informally, the type returned by decltype(e) is deduced as follows:[1]If the expression e refers to a variable in local or namespace scope, a static member variable or a function parameter, then the result is that variable's or parameter's declared typeOtherwise, if e is an lvalue, decltype(e) is T&, where T is the type of e; if e is an xvalue, the result is T&&; otherwise, e is a prvalue and the result is T.These semantics were designed to fulfill the needs of generic library writers, while at the same time being intuitive for novice programmers, because the return type of decltype always matches the type of the object or function exactly as declared in the source code.[1] More formally, Rule 1 applies to unparenthesized id-expressions and class member access expressions.[11] [12] Example:[11]const int&& foo();const int bar();int i;struct A { double x; };