literal.xml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3. Copyright 2012 Eric Niebler
  4. Distributed under the Boost
  5. Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. -->
  8. <header name="boost/proto/literal.hpp">
  9. <para>
  10. The
  11. <computeroutput><classname alt="boost::proto::literal">proto::literal&lt;&gt;</classname></computeroutput>
  12. terminal wrapper, and the
  13. <computeroutput><functionname alt="boost::proto::lit">proto::lit()</functionname></computeroutput>
  14. function for creating
  15. <computeroutput><classname alt="boost::proto::literal">proto::literal&lt;&gt;</classname></computeroutput>
  16. wrappers.
  17. </para>
  18. <namespace name="boost">
  19. <namespace name="proto">
  20. <struct name="literal">
  21. <template>
  22. <template-type-parameter name="T"/>
  23. <template-type-parameter name="Domain">
  24. <default><classname>proto::default_domain</classname></default>
  25. </template-type-parameter>
  26. </template>
  27. <inherit>
  28. <type>
  29. <classname>proto::extends</classname>&lt;<classname>proto::basic_expr</classname>&lt;<classname>proto::tag::terminal</classname>, <classname>proto::term</classname>&lt; T &gt; &gt;, proto::literal&lt;T, Domain&gt;, Domain&gt;</type>
  30. </inherit>
  31. <purpose>A simple wrapper for a terminal, provided for ease of use.</purpose>
  32. <description>
  33. <para>
  34. A simple wrapper for a terminal, provided for ease of use. In all cases,
  35. <computeroutput>proto::literal&lt;X&gt; l(x);</computeroutput> is equivalent to
  36. <computeroutput><classname>proto::terminal</classname>&lt;X&gt;::type l = {x};</computeroutput>.
  37. </para>
  38. <para>
  39. The <computeroutput>Domain</computeroutput> template parameter defaults to
  40. <computeroutput><classname>proto::default_domain</classname></computeroutput>.
  41. </para>
  42. </description>
  43. <typedef name="X">
  44. <purpose>For exposition only</purpose>
  45. <type><classname>proto::basic_expr</classname>&lt;<classname>proto::tag::terminal</classname>, <classname>proto::term</classname>&lt; T &gt; &gt;</type>
  46. </typedef>
  47. <typedef name="value_type">
  48. <type>typename <classname>proto::result_of::value</classname>&lt;X&gt;::type</type>
  49. </typedef>
  50. <typedef name="reference">
  51. <type>typename <classname>proto::result_of::value</classname>&lt;X &amp;&gt;::type</type>
  52. </typedef>
  53. <typedef name="const_reference">
  54. <type>typename <classname>proto::result_of::value</classname>&lt;X const &amp;&gt;::type</type>
  55. </typedef>
  56. <method-group name="public member functions">
  57. <method name="get">
  58. <type>reference</type>
  59. <returns>
  60. <computeroutput><functionname>proto::value</functionname>(*this)</computeroutput>
  61. </returns>
  62. </method>
  63. <method name="get" cv="const">
  64. <type>const_reference</type>
  65. <returns>
  66. <computeroutput><functionname>proto::value</functionname>(*this)</computeroutput>
  67. </returns>
  68. </method>
  69. </method-group>
  70. <constructor/>
  71. <constructor>
  72. <template>
  73. <template-type-parameter name="U"/>
  74. </template>
  75. <parameter name="u">
  76. <paramtype>U &amp;</paramtype>
  77. </parameter>
  78. </constructor>
  79. <constructor>
  80. <template>
  81. <template-type-parameter name="U"/>
  82. </template>
  83. <parameter name="u">
  84. <paramtype>U const &amp;</paramtype>
  85. </parameter>
  86. </constructor>
  87. <constructor>
  88. <template>
  89. <template-type-parameter name="U"/>
  90. </template>
  91. <parameter name="u">
  92. <paramtype><classname>proto::literal</classname>&lt; U, Domain &gt; const &amp;</paramtype>
  93. </parameter>
  94. </constructor>
  95. </struct>
  96. <!-- proto::lit() -->
  97. <overloaded-function name="lit">
  98. <signature>
  99. <type><classname>proto::literal</classname>&lt; T &amp; &gt; const</type>
  100. <template>
  101. <template-type-parameter name="T"/>
  102. </template>
  103. <parameter name="t">
  104. <paramtype>T &amp;</paramtype>
  105. <description>
  106. <para>The object to wrap.</para>
  107. </description>
  108. </parameter>
  109. </signature>
  110. <signature>
  111. <type><classname>proto::literal</classname>&lt; T const &amp; &gt; const</type>
  112. <template>
  113. <template-type-parameter name="T"/>
  114. </template>
  115. <parameter name="t">
  116. <paramtype>T const &amp;</paramtype>
  117. </parameter>
  118. </signature>
  119. <purpose>A helper function for creating a <computeroutput>
  120. <classname alt="proto::literal">proto::literal&lt;&gt;</classname></computeroutput> wrapper.
  121. </purpose>
  122. <returns>
  123. <para>
  124. <computeroutput><classname>proto::literal</classname>&lt;T &amp;&gt;(t)</computeroutput>
  125. </para>
  126. </returns>
  127. <throws>
  128. <simpara>Will not throw.</simpara>
  129. </throws>
  130. <notes>
  131. <para>The returned value holds the argument by reference. </para>
  132. </notes>
  133. </overloaded-function>
  134. </namespace>
  135. </namespace>
  136. </header>