programming language type expression introduced primary intended use generic programming difficult impossible express types depend template parameters generic programming techniques increasingly popular 1990s need type mechanism recognized vendors implemented versions operator typically called portable limited functionality based existing language features developed proposed standardized version operator added language suggested reflect operator yield declared type expression designed cater generic library writers programmers general type matches type object function exactly declared source code like operator evaluated motivation introduction programming language advent generic programming techniques pioneered need mechanism obtaining type expression commonly referred recognized generic programming difficult impossible express types depend template parameters particular return type function template vendors provide operator extension early fully standardized proposed portable solution based operator work expanded concluded technique limitations generally powerful actual mechanism october article journal remarked template code easier write understand noted share type recognized built facility invites subtle programming errors problems solve characterized use type conventions like provided powerful general technique argued conventions costly design easier simply extract type expression article predicted widely everyday programs easier write suggested extending language mechanisms type expression objects type observed reference dropping offered operator provided problematic conversely operator returning reference type based expression deemed confusing initial proposal standards committee outlined combination variants operator return reference type declared type expression included reference emphasize type reflect declared type expression operator proposed named cited main motivations proposal ability write perfect function desirable write generic function returns type wrapped function regardless type generally possible accomplish example utilizes trailing return type essential preserves information wrapped function returns reference type similarly operator informally type returned follows expression refers variable local scope static member variable function result variable declared type type result result designed fulfill needs generic library writers time intuitive programmers return type matches type object function exactly declared source code formally rule applies expressions class member access expressions example reason difference expression expression member access expression denote named object expression type reference type expression double december concern raised committee inability use form qualified inconsistent intent treated commenting formal committee draft japanese member body noted scope operator applied useful case obtain member type type instance follows similar issues pertaining wording use declaration derived class addressed voted working paper march availability included language standard provided number extension microsoft later provide type closely described standards committee proposal managed native code documentation states useful primarily developers write template libraries added mainline version released march present
Decltype