is_constructible.html 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>is_constructible</title>
  5. <link rel="stylesheet" href="../../../../../../doc/src/boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.TypeTraits">
  8. <link rel="up" href="../reference.html" title="Alphabetical Reference">
  9. <link rel="prev" href="is_const.html" title="is_const">
  10. <link rel="next" href="is_convertible.html" title="is_convertible">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <table cellpadding="2" width="100%"><tr>
  14. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
  15. <td align="center"><a href="../../../../../../index.html">Home</a></td>
  16. <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
  17. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  18. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  19. <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="is_const.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_convertible.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h3 class="title">
  27. <a name="boost_typetraits.reference.is_constructible"></a><a class="link" href="is_constructible.html" title="is_constructible">is_constructible</a>
  28. </h3></div></div></div>
  29. <pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span>
  30. <span class="keyword">struct</span> <span class="identifier">is_constructible</span> <span class="special">:</span> <span class="keyword">public</span> <em class="replaceable"><code><a class="link" href="integral_constant.html" title="integral_constant">true_type</a>-or-<a class="link" href="integral_constant.html" title="integral_constant">false_type</a></code></em> <span class="special">{};</span>
  31. </pre>
  32. <p>
  33. <span class="bold"><strong>Inherits:</strong></span> If <code class="computeroutput"><span class="identifier">T</span></code>
  34. can be constructed from <code class="computeroutput"><span class="identifier">Args</span></code>,
  35. then inherits from <a class="link" href="integral_constant.html" title="integral_constant">true_type</a>,
  36. otherwise inherits from <a class="link" href="integral_constant.html" title="integral_constant">false_type</a>.
  37. Type <code class="computeroutput"><span class="identifier">T</span></code> must be a complete
  38. type.
  39. </p>
  40. <p>
  41. Formally the trait answers the question, is the expression:
  42. </p>
  43. <pre class="programlisting"><span class="identifier">T</span> <span class="identifier">t</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">declval</span><span class="special">&lt;</span><span class="identifier">Args</span><span class="special">&gt;()...);</span>
  44. </pre>
  45. <p>
  46. valid?
  47. </p>
  48. <p>
  49. There are a number of important special cases for this trait:
  50. </p>
  51. <pre class="programlisting"><span class="identifier">is_constructible</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
  52. </pre>
  53. <p>
  54. Indicates whether <code class="computeroutput"><span class="identifier">T</span></code> is default
  55. constructible, while:
  56. </p>
  57. <pre class="programlisting"><span class="identifier">is_constructible</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;&gt;::</span><span class="identifier">value</span>
  58. </pre>
  59. <p>
  60. Indicates whether <code class="computeroutput"><span class="identifier">T</span></code> is copy-constructible,
  61. and:
  62. </p>
  63. <pre class="programlisting"><span class="identifier">is_constructible</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
  64. </pre>
  65. <p>
  66. Indicates whether <code class="computeroutput"><span class="identifier">T</span></code> is move-constructible.
  67. </p>
  68. <p>
  69. <span class="bold"><strong>Compiler Compatibility:</strong></span> This trait requires
  70. the C++11 features <code class="computeroutput"><span class="keyword">decltype</span></code>
  71. variadic templates and SFINAE-expression support for full support. While
  72. there is some fallback code for cases where this is not the case, the trait
  73. should really be considered broken in that case. The header will define the
  74. macro <code class="computeroutput"><span class="identifier">BOOST_TT_IS_CONSTRUCTIBLE_CONFORMING</span></code>
  75. when the full implementation is available.
  76. </p>
  77. <p>
  78. <span class="bold"><strong>Header:</strong></span> <code class="computeroutput"> <span class="preprocessor">#include</span>
  79. <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">/</span><span class="identifier">is_constructible</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
  80. or <code class="computeroutput"> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">type_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
  81. </p>
  82. </div>
  83. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  84. <td align="left"></td>
  85. <td align="right"><div class="copyright-footer">Copyright &#169; 2000, 2011 Adobe Systems Inc, David Abrahams,
  86. Frederic Bron, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant,
  87. Jesse Jones, Mat Marcus, Itay Maman, John Maddock, Alexander Nasonov, Thorsten
  88. Ottosen, Roman Perepelitsa, Robert Ramey, Jeremy Siek, Robert Stewart and Steven
  89. Watanabe<p>
  90. Distributed under the Boost Software License, Version 1.0. (See accompanying
  91. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  92. </p>
  93. </div></td>
  94. </tr></table>
  95. <hr>
  96. <div class="spirit-nav">
  97. <a accesskey="p" href="is_const.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_convertible.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
  98. </div>
  99. </body>
  100. </html>