1
<?xml version=
"1.0" encoding=
"utf-8"?>
3 Copyright 2012 Eric Niebler
5 Distributed under the Boost
6 Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 <header name=
"boost/proto/literal.hpp">
12 <computeroutput><classname alt=
"boost::proto::literal">proto::literal
<></classname></computeroutput>
13 terminal wrapper, and the
14 <computeroutput><functionname alt=
"boost::proto::lit">proto::lit()
</functionname></computeroutput>
16 <computeroutput><classname alt=
"boost::proto::literal">proto::literal
<></classname></computeroutput>
19 <namespace name=
"boost">
20 <namespace name=
"proto">
21 <struct name=
"literal">
23 <template-type-parameter name=
"T"/>
24 <template-type-parameter name=
"Domain">
25 <default><classname>proto::default_domain
</classname></default>
26 </template-type-parameter>
30 <classname>proto::extends
</classname><<classname>proto::basic_expr
</classname><<classname>proto::tag::terminal
</classname>,
<classname>proto::term
</classname>< T
> >, proto::literal
<T, Domain
>, Domain
></type>
32 <purpose>A simple wrapper for a terminal, provided for ease of use.
</purpose>
35 A simple wrapper for a terminal, provided for ease of use. In all cases,
36 <computeroutput>proto::literal
<X
> l(x);
</computeroutput> is equivalent to
37 <computeroutput><classname>proto::terminal
</classname><X
>::type l = {x};
</computeroutput>.
40 The
<computeroutput>Domain
</computeroutput> template parameter defaults to
41 <computeroutput><classname>proto::default_domain
</classname></computeroutput>.
45 <purpose>For exposition only
</purpose>
46 <type><classname>proto::basic_expr
</classname><<classname>proto::tag::terminal
</classname>,
<classname>proto::term
</classname>< T
> ></type>
48 <typedef name=
"value_type">
49 <type>typename
<classname>proto::result_of::value
</classname><X
>::type
</type>
51 <typedef name=
"reference">
52 <type>typename
<classname>proto::result_of::value
</classname><X
&>::type
</type>
54 <typedef name=
"const_reference">
55 <type>typename
<classname>proto::result_of::value
</classname><X const
&>::type
</type>
57 <method-group name=
"public member functions">
59 <type>reference
</type>
61 <computeroutput><functionname>proto::value
</functionname>(*this)
</computeroutput>
64 <method name=
"get" cv=
"const">
65 <type>const_reference
</type>
67 <computeroutput><functionname>proto::value
</functionname>(*this)
</computeroutput>
74 <template-type-parameter name=
"U"/>
77 <paramtype>U
&</paramtype>
82 <template-type-parameter name=
"U"/>
85 <paramtype>U const
&</paramtype>
90 <template-type-parameter name=
"U"/>
93 <paramtype><classname>proto::literal
</classname>< U, Domain
> const
&</paramtype>
99 <overloaded-function name=
"lit">
101 <type><classname>proto::literal
</classname>< T
& > const
</type>
103 <template-type-parameter name=
"T"/>
106 <paramtype>T
&</paramtype>
108 <para>The object to wrap.
</para>
113 <type><classname>proto::literal
</classname>< T const
& > const
</type>
115 <template-type-parameter name=
"T"/>
118 <paramtype>T const
&</paramtype>
121 <purpose>A helper function for creating a
<computeroutput>
122 <classname alt=
"proto::literal">proto::literal
<></classname></computeroutput> wrapper.
126 <computeroutput><classname>proto::literal
</classname><T
&>(t)
</computeroutput>
130 <simpara>Will not throw.
</simpara>
133 <para>The returned value holds the argument by reference.
</para>
135 </overloaded-function>