• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>CallableTraits</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="CallableTraits">
8<link rel="next" href="callable_traits/reference.html" title="Reference Documentation">
9</head>
10<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
11<table cellpadding="2" width="100%"><tr>
12<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
13<td align="center"><a href="../../../../index.html">Home</a></td>
14<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
15<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
16<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
17<td align="center"><a href="../../../../more/index.htm">More</a></td>
18</tr></table>
19<hr>
20<div class="spirit-nav"><a accesskey="n" href="callable_traits/reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
21<div lang="en" class="article">
22<div class="titlepage">
23<div>
24<div><h2 class="title">
25<a name="callable_traits"></a>CallableTraits</h2></div>
26<div><div class="authorgroup"><div class="author"><h3 class="author">
27<span class="firstname">Barrett</span> <span class="surname">Adair</span>
28</h3></div></div></div>
29<div><p class="copyright">Copyright © 2016-2018 Barrett Adair</p></div>
30<div><div class="legalnotice">
31<a name="callable_traits.legal"></a><p>
32        Distributed under the Boost Software License, Version 1.0. (See accompanying
33        file LICENSE.md or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
34      </p>
35</div></div>
36</div>
37<hr>
38</div>
39<div class="toc">
40<p><b>Table of Contents</b></p>
41<dl class="toc">
42<dt><span class="section"><a href="index.html#callable_traits.introduction">Overview</a></span></dt>
43<dd><dl>
44<dt><span class="section"><a href="index.html#callable_traits.introduction.motivation">Motivation</a></span></dt>
45<dt><span class="section"><a href="index.html#callable_traits.introduction.boost_function_types">Regarding
46      <code class="literal">Boost.FunctionTypes</code></a></span></dt>
47<dt><span class="section"><a href="index.html#callable_traits.introduction.compatibility">Compatibility</a></span></dt>
48</dl></dd>
49<dt><span class="section"><a href="callable_traits/reference.html">Reference Documentation</a></span></dt>
50<dd><dl>
51<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_member_const">add_member_const</a></span></dt>
52<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_member_cv">add_member_cv</a></span></dt>
53<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_member_lvalue_reference">add_member_lvalue_reference</a></span></dt>
54<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_member_rvalue_reference">add_member_rvalue_reference</a></span></dt>
55<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_member_volatile">add_member_volatile</a></span></dt>
56<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_noexcept">add_noexcept</a></span></dt>
57<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_transaction_safe">add_transaction_safe</a></span></dt>
58<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_add_varargs">add_varargs</a></span></dt>
59<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_apply_member_pointer">apply_member_pointer</a></span></dt>
60<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_apply_return">apply_return</a></span></dt>
61<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_args">args</a></span></dt>
62<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_class_of">class_of</a></span></dt>
63<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_function_type">function_type</a></span></dt>
64<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_has_member_qualifiers">has_member_qualifiers</a></span></dt>
65<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_has_varargs">has_varargs</a></span></dt>
66<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_has_void_return">has_void_return</a></span></dt>
67<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_const_member">is_const_member</a></span></dt>
68<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_cv_member">is_cv_member</a></span></dt>
69<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_invocable">is_invocable</a></span></dt>
70<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_lvalue_reference_member">is_lvalue_reference_member</a></span></dt>
71<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_reference_member">is_reference_member</a></span></dt>
72<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_rvalue_reference_member">is_rvalue_reference_member</a></span></dt>
73<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_noexcept">is_noexcept</a></span></dt>
74<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_transaction_safe">is_transaction_safe</a></span></dt>
75<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_is_volatile_member">is_volatile_member</a></span></dt>
76<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_qualified_class_of">qualified_class_of</a></span></dt>
77<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_const">remove_member_const</a></span></dt>
78<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_cv">remove_member_cv</a></span></dt>
79<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_reference">remove_member_reference</a></span></dt>
80<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_volatile">remove_member_volatile</a></span></dt>
81<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_noexcept">remove_noexcept</a></span></dt>
82<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_transaction_safe">remove_transaction_safe</a></span></dt>
83<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_remove_varargs">remove_varargs</a></span></dt>
84<dt><span class="section"><a href="callable_traits/reference.html#callable_traits.reference.ref_return_type">return_type</a></span></dt>
85</dl></dd>
86<dt><span class="section"><a href="callable_traits/faq.html">FAQ</a></span></dt>
87<dt><span class="section"><a href="callable_traits/building.html">Building the test suite</a></span></dt>
88<dt><span class="section"><a href="callable_traits/contact.html">Contact</a></span></dt>
89<dt><span class="section"><a href="callable_traits/acknowledgements.html">Acknowledgements</a></span></dt>
90</dl>
91</div>
92<div class="section">
93<div class="titlepage"><div><div><h2 class="title" style="clear: both">
94<a name="callable_traits.introduction"></a><a class="link" href="index.html#callable_traits.introduction" title="Overview">Overview</a>
95</h2></div></div></div>
96<div class="toc"><dl class="toc">
97<dt><span class="section"><a href="index.html#callable_traits.introduction.motivation">Motivation</a></span></dt>
98<dt><span class="section"><a href="index.html#callable_traits.introduction.boost_function_types">Regarding
99      <code class="literal">Boost.FunctionTypes</code></a></span></dt>
100<dt><span class="section"><a href="index.html#callable_traits.introduction.compatibility">Compatibility</a></span></dt>
101</dl></div>
102<p>
103      <code class="literal">Boost.CallableTraits</code> is a C++11 header-only library for
104      the inspection, synthesis, and decomposition of callable types. <code class="literal">Boost.CallableTraits</code>
105      aims to be the "complete type manipulation facility for function types"
106      mentioned in the final paragraph of C++17 proposal <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2015/p0172r0.html" target="_top">p0172</a>,
107      and removes the need for template specializations for different function signatures.
108      C++17 <code class="computeroutput"><span class="keyword">noexcept</span></code> and the Transactional
109      Memory TS are also supported if available.
110    </p>
111<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">type_traits</span><span class="special">&gt;</span>
112<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">tuple</span><span class="special">&gt;</span>
113<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">callable_traits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
114
115<span class="keyword">namespace</span> <span class="identifier">ct</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">callable_traits</span><span class="special">;</span>
116
117<span class="comment">// This function template helps keep our example code neat</span>
118<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">B</span><span class="special">&gt;</span>
119<span class="keyword">void</span> <span class="identifier">assert_same</span><span class="special">(){</span> <span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span> <span class="special">}</span>
120
121<span class="comment">// foo is a function object</span>
122<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span>
123    <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">float</span><span class="special">)</span> <span class="keyword">const</span> <span class="special">{}</span>
124<span class="special">};</span>
125
126<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
127
128    <span class="comment">// Use args_t to retrieve a parameter list as a std::tuple:</span>
129    <span class="identifier">assert_same</span><span class="special">&lt;</span>
130        <span class="identifier">ct</span><span class="special">::</span><span class="identifier">args_t</span><span class="special">&lt;</span><span class="identifier">foo</span><span class="special">&gt;,</span>
131        <span class="identifier">std</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">float</span><span class="special">&gt;</span>
132    <span class="special">&gt;();</span>
133
134    <span class="comment">// has_void_return lets us perform a quick check for a void return type</span>
135    <span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">ct</span><span class="special">::</span><span class="identifier">has_void_return</span><span class="special">&lt;</span><span class="identifier">foo</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
136
137    <span class="comment">// Detect C-style variadics (ellipses) in a signature (e.g. printf)</span>
138    <span class="keyword">static_assert</span><span class="special">(!</span><span class="identifier">ct</span><span class="special">::</span><span class="identifier">has_varargs</span><span class="special">&lt;</span><span class="identifier">foo</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
139
140    <span class="comment">// pmf is a pointer-to-member function: void (foo::*)(int, char, float) const</span>
141    <span class="keyword">using</span> <span class="identifier">pmf</span> <span class="special">=</span> <span class="keyword">decltype</span><span class="special">(&amp;</span><span class="identifier">foo</span><span class="special">::</span><span class="keyword">operator</span><span class="special">());</span>
142
143    <span class="comment">// remove_member_const_t lets you remove the const member qualifier</span>
144    <span class="identifier">assert_same</span><span class="special">&lt;</span>
145        <span class="identifier">ct</span><span class="special">::</span><span class="identifier">remove_member_const_t</span><span class="special">&lt;</span><span class="identifier">pmf</span><span class="special">&gt;,</span>
146        <span class="keyword">void</span> <span class="special">(</span><span class="identifier">foo</span><span class="special">::*)(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">float</span><span class="special">)</span> <span class="comment">/*no const!*/</span>
147    <span class="special">&gt;();</span>
148
149    <span class="comment">// Conversely, add_member_const_t adds a const member qualifier</span>
150    <span class="identifier">assert_same</span><span class="special">&lt;</span>
151        <span class="identifier">pmf</span><span class="special">,</span>
152        <span class="identifier">ct</span><span class="special">::</span><span class="identifier">add_member_const_t</span><span class="special">&lt;</span><span class="keyword">void</span> <span class="special">(</span><span class="identifier">foo</span><span class="special">::*)(</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">char</span><span class="special">,</span> <span class="keyword">float</span><span class="special">)&gt;</span>
153    <span class="special">&gt;();</span>
154
155    <span class="comment">// is_const_member_v checks for the presence of member const</span>
156    <span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">ct</span><span class="special">::</span><span class="identifier">is_const_member</span><span class="special">&lt;</span><span class="identifier">pmf</span><span class="special">&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
157<span class="special">}</span>
158</pre>
159<div class="section">
160<div class="titlepage"><div><div><h3 class="title">
161<a name="callable_traits.introduction.motivation"></a><a class="link" href="index.html#callable_traits.introduction.motivation" title="Motivation">Motivation</a>
162</h3></div></div></div>
163<div class="blockquote"><blockquote class="blockquote">
164<p>
165          <span class="bold"><strong><span class="emphasis"><em><span class="quote">“<span class="quote">Don't try to write helper code to
166          detect PMFs/PMDs and dispatch on them -- it is an <span class="underline">absolute
167          nightmare</span>. PMF types are the worst types by far in the core
168          language.</span>”</span></em></span></strong></span>
169        </p>
170<p>
171          -- Stephan T. Lavavej, CppCon 2015, <a href="https://www.youtube.com/watch?v=zt7ThwVfap0&amp;t=11m40s" target="_top">"functional:
172          What's New, And Proper Usage"</a>
173        </p>
174</blockquote></div>
175<p>
176        Consider for a moment the code below, which defines all 48 template specializations
177        necessary to specialize for every valid function type in pure C++17:
178      </p>
179<pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">;</span>
180
181<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)&gt;</span> <span class="special">{};</span>
182<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
183<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
184<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span><span class="special">&gt;</span> <span class="special">{};</span>
185<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
186<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
187<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span><span class="special">&gt;</span> <span class="special">{};</span>
188<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
189<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
190<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&gt;</span> <span class="special">{};</span>
191<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
192<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
193<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)&gt;</span> <span class="special">{};</span>
194<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
195<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
196<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span><span class="special">&gt;</span> <span class="special">{};</span>
197<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
198<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
199<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span><span class="special">&gt;</span> <span class="special">{};</span>
200<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
201<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
202<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span><span class="special">&gt;</span> <span class="special">{};</span>
203<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&gt;</span> <span class="special">{};</span>
204<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;&gt;</span> <span class="special">{};</span>
205<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
206<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
207<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
208<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
209<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
210<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
211<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
212<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
213<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
214<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
215<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
216<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
217<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
218<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
219<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
220<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
221<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
222<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
223<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
224<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
225<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
226<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
227<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
228<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Return</span><span class="special">,</span> <span class="keyword">class</span><span class="special">...</span> <span class="identifier">Args</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">&lt;</span><span class="identifier">Return</span><span class="special">(</span><span class="identifier">Args</span><span class="special">...,</span> <span class="special">...)</span> <span class="keyword">const</span> <span class="keyword">volatile</span> <span class="special">&amp;&amp;</span> <span class="keyword">noexcept</span><span class="special">&gt;</span> <span class="special">{};</span>
229</pre>
230<p>
231        Things get even more complicated with member function pointers, function
232        pointers, function references, function objects, and <code class="computeroutput"><span class="identifier">transaction_safe</span></code>.
233      </p>
234<p>
235        Granted, use cases for such obscure specializations are vitually nonexistent
236        in run-of-the-mill application codebases. Even in library code, these are
237        exceedingly rare. However, there are a handful of metaprogramming scenarios
238        that can only be solved with this kind of template "spam". Writing,
239        testing, and maintaining such code is tedious and costly.
240      </p>
241<p>
242        <code class="literal">Boost.CallableTraits</code> offers a final and decisive library-level
243        solution to this problem, and removes the need for these specializations
244        entirely (platform-specific calling conventions notwithstanding).
245      </p>
246</div>
247<div class="section">
248<div class="titlepage"><div><div><h3 class="title">
249<a name="callable_traits.introduction.boost_function_types"></a><a class="link" href="index.html#callable_traits.introduction.boost_function_types" title="Regarding Boost.FunctionTypes">Regarding
250      <code class="literal">Boost.FunctionTypes</code></a>
251</h3></div></div></div>
252<p>
253        The features in <code class="literal">Boost.CallableTraits</code> largely overlap with
254        <a href="http://www.boost.org/doc/libs/1_61_0/libs/function_types/doc/html/index.html" target="_top"><code class="literal">Boost.FunctionTypes</code></a>.
255        Here are some reasons why you might prefer <code class="literal">Boost.CallableTraits</code>:
256      </p>
257<div class="orderedlist"><ol class="orderedlist" type="1">
258<li class="listitem">
259            <code class="literal">Boost.FunctionTypes</code> is tightly coupled to <a href="http://www.boost.org/doc/libs/1_64_0/libs/mpl/doc/index.html" target="_top"><code class="literal">Boost.MPL</code></a>
260            sequences, while <code class="literal">Boost.CallableTraits</code> has no dependencies
261            other than the standard library.
262          </li>
263<li class="listitem">
264            <code class="literal">Boost.CallableTraits</code> targets C++11 and later:
265            <div class="orderedlist"><ol class="orderedlist" type="a">
266<li class="listitem">
267                  <code class="literal">Boost.CallableTraits</code> treats function objects/lambdas
268                  as first-class citizens.
269                </li>
270<li class="listitem">
271                  <code class="literal">Boost.CallableTraits</code> supports lvalue/rvalue
272                  reference member qualifiers.
273                </li>
274<li class="listitem">
275                  <code class="literal">Boost.CallableTraits</code> supports <code class="computeroutput"><span class="keyword">noexcept</span></code> and <code class="computeroutput"><span class="identifier">transaction_safe</span></code>.
276                </li>
277</ol></div>
278          </li>
279<li class="listitem">
280            <code class="literal">Boost.FunctionTypes</code> does not attempt to factor all
281            callable types into a unified, <a href="http://en.cppreference.com/w/cpp/utility/functional/invoke" target="_top"><code class="literal"><span class="emphasis"><em>INVOKE</em></span></code></a>-aware
282            interface.
283          </li>
284<li class="listitem">
285            <code class="literal">Boost.FunctionTypes</code> relies heavily on "tag"
286            types, while <code class="literal">Boost.CallableTraits</code> follows the style
287            of &lt;type_traits&gt; instead. Supporting C++11 and later in <code class="literal">Boost.FunctionTypes</code>
288            would have required significant proliferation of these tags.
289          </li>
290</ol></div>
291<p>
292        For example, here is how to remove member <code class="computeroutput"><span class="keyword">const</span></code>
293        from a member function pointer type in the <code class="literal">Boost.FunctionTypes</code>
294        library:
295      </p>
296<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">type_traits</span><span class="special">&gt;</span>
297<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">components</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
298<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">function_types</span><span class="special">/</span><span class="identifier">member_function_pointer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
299
300<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span>
301    <span class="keyword">void</span> <span class="identifier">bar</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{}</span>
302<span class="special">};</span>
303
304<span class="keyword">using</span> <span class="identifier">const_removed</span> <span class="special">=</span> <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_types</span><span class="special">::</span><span class="identifier">member_function_pointer</span><span class="special">&lt;</span>
305    <span class="keyword">typename</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_types</span><span class="special">::</span><span class="identifier">components</span><span class="special">&lt;</span><span class="keyword">decltype</span><span class="special">(&amp;</span><span class="identifier">foo</span><span class="special">::</span><span class="identifier">bar</span><span class="special">)&gt;::</span><span class="identifier">types</span><span class="special">,</span>
306    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function_types</span><span class="special">::</span><span class="identifier">non_const</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">;</span>
307
308<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">const_removed</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">foo</span><span class="special">::*)()&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
309
310<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(){}</span>
311</pre>
312<p>
313        <code class="literal">Boost.CallableTraits</code> makes this easier:
314      </p>
315<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">type_traits</span><span class="special">&gt;</span>
316<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">callable_traits</span><span class="special">/</span><span class="identifier">remove_member_const</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
317
318<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">{</span>
319        <span class="keyword">void</span> <span class="identifier">bar</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">{}</span>
320<span class="special">};</span>
321
322<span class="keyword">using</span> <span class="identifier">const_removed</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">callable_traits</span><span class="special">::</span><span class="identifier">remove_member_const_t</span><span class="special">&lt;</span><span class="keyword">decltype</span><span class="special">(&amp;</span><span class="identifier">foo</span><span class="special">::</span><span class="identifier">bar</span><span class="special">)&gt;;</span>
323
324<span class="keyword">static_assert</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_same</span><span class="special">&lt;</span><span class="identifier">const_removed</span><span class="special">,</span> <span class="keyword">void</span><span class="special">(</span><span class="identifier">foo</span><span class="special">::*)()&gt;::</span><span class="identifier">value</span><span class="special">,</span> <span class="string">""</span><span class="special">);</span>
325
326<span class="keyword">int</span> <span class="identifier">main</span><span class="special">(){}</span>
327</pre>
328<p>
329        The <code class="literal">Boost.FunctionTypes</code> library includes an excellent
330        <a href="http://www.boost.org/doc/libs/1_64_0/libs/function_types/example/interface_example.cpp" target="_top">example</a>
331        for generating type-erased interfaces (implementation <a href="http://www.boost.org/doc/libs/1_64_0/libs/function_types/example/interface.hpp" target="_top">here</a>).
332        This example was <a href="https://github.com/badair/eraserface/blob/master/include/eraserface/eraserface.hpp" target="_top">re-implemented</a>
333        using <code class="literal">Boost.CallableTraits</code> to yield a <a href="https://github.com/badair/eraserface/blob/master/example/basic_example.cpp" target="_top">slightly
334        more intuitive interface</a>.
335      </p>
336<p>
337        <code class="literal">Boost.FunctionTypes</code> is a fine library, but its interface
338        left room for improvement.
339      </p>
340</div>
341<div class="section">
342<div class="titlepage"><div><div><h3 class="title">
343<a name="callable_traits.introduction.compatibility"></a><a class="link" href="index.html#callable_traits.introduction.compatibility" title="Compatibility">Compatibility</a>
344</h3></div></div></div>
345<p>
346        <code class="literal">Boost.CallableTraits</code> supports on GCC 4.7.4+, Clang 3.5.2+,
347        XCode 6.4+, and Visual Studio 2015+. Continuous integration is managed on
348        <a href="https://ci.appveyor.com/project/boostorg/callable-traits" target="_top">Appveyor</a>
349        for Visual Studio, and on <a href="https://travis-ci.org/boostorg/callable_traits/builds" target="_top">Travis</a>
350        for everything else. The Intel C++ Compiler is not officially supported yet,
351        although the 2017 version for Linux does pass a handful of test cases.
352      </p>
353<div class="table">
354<a name="callable_traits.introduction.compatibility.gcc_support"></a><p class="title"><b>Table 1. GCC Support</b></p>
355<div class="table-contents"><table class="table" summary="GCC Support">
356<colgroup>
357<col>
358<col>
359<col>
360<col>
361<col>
362<col>
363<col>
364<col>
365</colgroup>
366<thead><tr>
367<th>
368                <p>
369                  feature
370                </p>
371              </th>
372<th>
373                <p>
374                  GCC 8.2.0
375                </p>
376              </th>
377<th>
378                <p>
379                  GCC 7.3.0
380                </p>
381              </th>
382<th>
383                <p>
384                  GCC 6.3.0
385                </p>
386              </th>
387<th>
388                <p>
389                  GCC 5.4.0
390                </p>
391              </th>
392<th>
393                <p>
394                  GCC 4.9.2
395                </p>
396              </th>
397<th>
398                <p>
399                  GCC 4.8.2
400                </p>
401              </th>
402<th>
403                <p>
404                  GCC 4.7.4
405                </p>
406              </th>
407</tr></thead>
408<tbody>
409<tr>
410<td>
411                <p>
412                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_const" title="add_member_const"><code class="literal">add_member_const</code></a>
413                </p>
414              </td>
415<td>
416                <p>
417                  <span class="green">c++11</span>
418                </p>
419              </td>
420<td>
421                <p>
422                  <span class="green">c++11</span>
423                </p>
424              </td>
425<td>
426                <p>
427                  <span class="green">c++11</span>
428                </p>
429              </td>
430<td>
431                <p>
432                  <span class="green">c++11</span>
433                </p>
434              </td>
435<td>
436                <p>
437                  <span class="green">c++11</span>
438                </p>
439              </td>
440<td>
441                <p>
442                  <span class="gold">c++11</span> (no abominables)
443                </p>
444              </td>
445<td>
446                <p>
447                  <span class="gold">c++11</span> (no abominables)
448                </p>
449              </td>
450</tr>
451<tr>
452<td>
453                <p>
454                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_cv" title="add_member_cv"><code class="literal">add_member_cv</code></a>
455                </p>
456              </td>
457<td>
458                <p>
459                  <span class="green">c++11</span>
460                </p>
461              </td>
462<td>
463                <p>
464                  <span class="green">c++11</span>
465                </p>
466              </td>
467<td>
468                <p>
469                  <span class="green">c++11</span>
470                </p>
471              </td>
472<td>
473                <p>
474                  <span class="green">c++11</span>
475                </p>
476              </td>
477<td>
478                <p>
479                  <span class="green">c++11</span>
480                </p>
481              </td>
482<td>
483                <p>
484                  <span class="gold">c++11</span> (no abominables)
485                </p>
486              </td>
487<td>
488                <p>
489                  <span class="gold">c++11</span> (no abominables)
490                </p>
491              </td>
492</tr>
493<tr>
494<td>
495                <p>
496                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_lvalue_reference" title="add_member_lvalue_reference"><code class="literal">add_member_lvalue_reference</code></a>
497                </p>
498              </td>
499<td>
500                <p>
501                  <span class="green">c++11</span>
502                </p>
503              </td>
504<td>
505                <p>
506                  <span class="green">c++11</span>
507                </p>
508              </td>
509<td>
510                <p>
511                  <span class="green">c++11</span>
512                </p>
513              </td>
514<td>
515                <p>
516                  <span class="green">c++11</span>
517                </p>
518              </td>
519<td>
520                <p>
521                  <span class="green">c++11</span>
522                </p>
523              </td>
524<td>
525                <p>
526                  <span class="red">static_assert fails on instantiation</span>
527                </p>
528              </td>
529<td>
530                <p>
531                  <span class="red">static_assert fails on instantiation</span>
532                </p>
533              </td>
534</tr>
535<tr>
536<td>
537                <p>
538                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_rvalue_reference" title="add_member_rvalue_reference"><code class="literal">add_member_rvalue_reference</code></a>
539                </p>
540              </td>
541<td>
542                <p>
543                  <span class="green">c++11</span>
544                </p>
545              </td>
546<td>
547                <p>
548                  <span class="green">c++11</span>
549                </p>
550              </td>
551<td>
552                <p>
553                  <span class="green">c++11</span>
554                </p>
555              </td>
556<td>
557                <p>
558                  <span class="green">c++11</span>
559                </p>
560              </td>
561<td>
562                <p>
563                  <span class="green">c++11</span>
564                </p>
565              </td>
566<td>
567                <p>
568                  <span class="red">static_assert fails on instantiation</span>
569                </p>
570              </td>
571<td>
572                <p>
573                  <span class="red">static_assert fails on instantiation</span>
574                </p>
575              </td>
576</tr>
577<tr>
578<td>
579                <p>
580                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_volatile" title="add_member_volatile"><code class="literal">add_member_volatile</code></a>
581                </p>
582              </td>
583<td>
584                <p>
585                  <span class="green">c++11</span>
586                </p>
587              </td>
588<td>
589                <p>
590                  <span class="green">c++11</span>
591                </p>
592              </td>
593<td>
594                <p>
595                  <span class="green">c++11</span>
596                </p>
597              </td>
598<td>
599                <p>
600                  <span class="green">c++11</span>
601                </p>
602              </td>
603<td>
604                <p>
605                  <span class="green">c++11</span>
606                </p>
607              </td>
608<td>
609                <p>
610                  <span class="gold">c++11</span> (no abominables)
611                </p>
612              </td>
613<td>
614                <p>
615                  <span class="gold">c++11</span> (no abominables)
616                </p>
617              </td>
618</tr>
619<tr>
620<td>
621                <p>
622                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_noexcept" title="add_noexcept"><code class="literal">add_noexcept</code></a>
623                </p>
624              </td>
625<td>
626                <p>
627                  <span class="green">c++17</span>
628                </p>
629              </td>
630<td>
631                <p>
632                  <span class="green">c++17</span>
633                </p>
634              </td>
635<td>
636                <p>
637                  <span class="green">c++17</span>
638                </p>
639              </td>
640<td>
641                <p>
642                  <span class="red">static_assert fails on instantiation</span>
643                </p>
644              </td>
645<td>
646                <p>
647                  <span class="red">static_assert fails on instantiation</span>
648                </p>
649              </td>
650<td>
651                <p>
652                  <span class="red">static_assert fails on instantiation</span>
653                </p>
654              </td>
655<td>
656                <p>
657                  <span class="red">static_assert fails on instantiation</span>
658                </p>
659              </td>
660</tr>
661<tr>
662<td>
663                <p>
664                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_transaction_safe" title="add_transaction_safe"><code class="literal">add_transaction_safe</code></a>
665                </p>
666              </td>
667<td>
668                <p>
669                  <span class="gold">c++17</span> (requires -fgnu-tm)
670                </p>
671              </td>
672<td>
673                <p>
674                  <span class="gold">c++17</span> (requires -fgnu-tm)
675                </p>
676              </td>
677<td>
678                <p>
679                  <span class="gold">c++17</span> (requires -fgnu-tm)
680                </p>
681              </td>
682<td>
683                <p>
684                  <span class="red">static_assert fails on instantiation</span>
685                </p>
686              </td>
687<td>
688                <p>
689                  <span class="red">static_assert fails on instantiation</span>
690                </p>
691              </td>
692<td>
693                <p>
694                  <span class="red">static_assert fails on instantiation</span>
695                </p>
696              </td>
697<td>
698                <p>
699                  <span class="red">static_assert fails on instantiation</span>
700                </p>
701              </td>
702</tr>
703<tr>
704<td>
705                <p>
706                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_varargs" title="add_varargs"><code class="literal">add_varargs</code></a>
707                </p>
708              </td>
709<td>
710                <p>
711                  <span class="green">c++11</span>
712                </p>
713              </td>
714<td>
715                <p>
716                  <span class="green">c++11</span>
717                </p>
718              </td>
719<td>
720                <p>
721                  <span class="green">c++11</span>
722                </p>
723              </td>
724<td>
725                <p>
726                  <span class="green">c++11</span>
727                </p>
728              </td>
729<td>
730                <p>
731                  <span class="green">c++11</span>
732                </p>
733              </td>
734<td>
735                <p>
736                  <span class="green">c++11</span>
737                </p>
738              </td>
739<td>
740                <p>
741                  <span class="green">c++11</span>
742                </p>
743              </td>
744</tr>
745<tr>
746<td>
747                <p>
748                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_member_pointer" title="apply_member_pointer"><code class="literal">apply_member_pointer</code></a>
749                </p>
750              </td>
751<td>
752                <p>
753                  <span class="green">c++11</span>
754                </p>
755              </td>
756<td>
757                <p>
758                  <span class="green">c++11</span>
759                </p>
760              </td>
761<td>
762                <p>
763                  <span class="green">c++11</span>
764                </p>
765              </td>
766<td>
767                <p>
768                  <span class="green">c++11</span>
769                </p>
770              </td>
771<td>
772                <p>
773                  <span class="green">c++11</span>
774                </p>
775              </td>
776<td>
777                <p>
778                  <span class="green">c++11</span>
779                </p>
780              </td>
781<td>
782                <p>
783                  <span class="green">c++11</span>
784                </p>
785              </td>
786</tr>
787<tr>
788<td>
789                <p>
790                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_return" title="apply_return"><code class="literal">apply_return</code></a>
791                </p>
792              </td>
793<td>
794                <p>
795                  <span class="green">c++11</span>
796                </p>
797              </td>
798<td>
799                <p>
800                  <span class="green">c++11</span>
801                </p>
802              </td>
803<td>
804                <p>
805                  <span class="green">c++11</span>
806                </p>
807              </td>
808<td>
809                <p>
810                  <span class="green">c++11</span>
811                </p>
812              </td>
813<td>
814                <p>
815                  <span class="green">c++11</span>
816                </p>
817              </td>
818<td>
819                <p>
820                  <span class="green">c++11</span>
821                </p>
822              </td>
823<td>
824                <p>
825                  <span class="green">c++11</span>
826                </p>
827              </td>
828</tr>
829<tr>
830<td>
831                <p>
832                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_args" title="args"><code class="literal">args</code></a>
833                </p>
834              </td>
835<td>
836                <p>
837                  <span class="green">c++11</span>
838                </p>
839              </td>
840<td>
841                <p>
842                  <span class="green">c++11</span>
843                </p>
844              </td>
845<td>
846                <p>
847                  <span class="green">c++11</span>
848                </p>
849              </td>
850<td>
851                <p>
852                  <span class="green">c++11</span>
853                </p>
854              </td>
855<td>
856                <p>
857                  <span class="green">c++11</span>
858                </p>
859              </td>
860<td>
861                <p>
862                  <span class="green">c++11</span>
863                </p>
864              </td>
865<td>
866                <p>
867                  <span class="green">c++11</span>
868                </p>
869              </td>
870</tr>
871<tr>
872<td>
873                <p>
874                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_class_of" title="class_of"><code class="literal">class_of</code></a>
875                </p>
876              </td>
877<td>
878                <p>
879                  <span class="green">c++11</span>
880                </p>
881              </td>
882<td>
883                <p>
884                  <span class="green">c++11</span>
885                </p>
886              </td>
887<td>
888                <p>
889                  <span class="green">c++11</span>
890                </p>
891              </td>
892<td>
893                <p>
894                  <span class="green">c++11</span>
895                </p>
896              </td>
897<td>
898                <p>
899                  <span class="green">c++11</span>
900                </p>
901              </td>
902<td>
903                <p>
904                  <span class="green">c++11</span>
905                </p>
906              </td>
907<td>
908                <p>
909                  <span class="green">c++11</span>
910                </p>
911              </td>
912</tr>
913<tr>
914<td>
915                <p>
916                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_function_type" title="function_type"><code class="literal">function_type</code></a>
917                </p>
918              </td>
919<td>
920                <p>
921                  <span class="green">c++11</span>
922                </p>
923              </td>
924<td>
925                <p>
926                  <span class="green">c++11</span>
927                </p>
928              </td>
929<td>
930                <p>
931                  <span class="green">c++11</span>
932                </p>
933              </td>
934<td>
935                <p>
936                  <span class="green">c++11</span>
937                </p>
938              </td>
939<td>
940                <p>
941                  <span class="green">c++11</span>
942                </p>
943              </td>
944<td>
945                <p>
946                  <span class="green">c++11</span>
947                </p>
948              </td>
949<td>
950                <p>
951                  <span class="green">c++11</span>
952                </p>
953              </td>
954</tr>
955<tr>
956<td>
957                <p>
958                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_member_qualifiers" title="has_member_qualifiers"><code class="literal">has_member_qualifiers</code></a>
959                </p>
960              </td>
961<td>
962                <p>
963                  <span class="green">c++11</span>
964                </p>
965              </td>
966<td>
967                <p>
968                  <span class="green">c++11</span>
969                </p>
970              </td>
971<td>
972                <p>
973                  <span class="green">c++11</span>
974                </p>
975              </td>
976<td>
977                <p>
978                  <span class="green">c++11</span>
979                </p>
980              </td>
981<td>
982                <p>
983                  <span class="green">c++11</span>
984                </p>
985              </td>
986<td>
987                <p>
988                  <span class="gold">c++11</span> (no abominables)
989                </p>
990              </td>
991<td>
992                <p>
993                  <span class="gold">c++11</span> (no abominables)
994                </p>
995              </td>
996</tr>
997<tr>
998<td>
999                <p>
1000                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_varargs" title="has_varargs"><code class="literal">has_varargs</code></a>
1001                </p>
1002              </td>
1003<td>
1004                <p>
1005                  <span class="green">c++11</span>
1006                </p>
1007              </td>
1008<td>
1009                <p>
1010                  <span class="green">c++11</span>
1011                </p>
1012              </td>
1013<td>
1014                <p>
1015                  <span class="green">c++11</span>
1016                </p>
1017              </td>
1018<td>
1019                <p>
1020                  <span class="green">c++11</span>
1021                </p>
1022              </td>
1023<td>
1024                <p>
1025                  <span class="green">c++11</span>
1026                </p>
1027              </td>
1028<td>
1029                <p>
1030                  <span class="green">c++11</span>
1031                </p>
1032              </td>
1033<td>
1034                <p>
1035                  <span class="green">c++11</span>
1036                </p>
1037              </td>
1038</tr>
1039<tr>
1040<td>
1041                <p>
1042                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_void_return" title="has_void_return"><code class="literal">has_void_return</code></a>
1043                </p>
1044              </td>
1045<td>
1046                <p>
1047                  <span class="green">c++11</span>
1048                </p>
1049              </td>
1050<td>
1051                <p>
1052                  <span class="green">c++11</span>
1053                </p>
1054              </td>
1055<td>
1056                <p>
1057                  <span class="green">c++11</span>
1058                </p>
1059              </td>
1060<td>
1061                <p>
1062                  <span class="green">c++11</span>
1063                </p>
1064              </td>
1065<td>
1066                <p>
1067                  <span class="green">c++11</span>
1068                </p>
1069              </td>
1070<td>
1071                <p>
1072                  <span class="green">c++11</span>
1073                </p>
1074              </td>
1075<td>
1076                <p>
1077                  <span class="green">c++11</span>
1078                </p>
1079              </td>
1080</tr>
1081<tr>
1082<td>
1083                <p>
1084                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_const_member" title="is_const_member"><code class="literal">is_const_member</code></a>
1085                </p>
1086              </td>
1087<td>
1088                <p>
1089                  <span class="green">c++11</span>
1090                </p>
1091              </td>
1092<td>
1093                <p>
1094                  <span class="green">c++11</span>
1095                </p>
1096              </td>
1097<td>
1098                <p>
1099                  <span class="green">c++11</span>
1100                </p>
1101              </td>
1102<td>
1103                <p>
1104                  <span class="green">c++11</span>
1105                </p>
1106              </td>
1107<td>
1108                <p>
1109                  <span class="green">c++11</span>
1110                </p>
1111              </td>
1112<td>
1113                <p>
1114                  <span class="gold">c++11</span> (no abominables)
1115                </p>
1116              </td>
1117<td>
1118                <p>
1119                  <span class="gold">c++11</span> (no abominables)
1120                </p>
1121              </td>
1122</tr>
1123<tr>
1124<td>
1125                <p>
1126                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_cv_member" title="is_cv_member"><code class="literal">is_cv_member</code></a>
1127                </p>
1128              </td>
1129<td>
1130                <p>
1131                  <span class="green">c++11</span>
1132                </p>
1133              </td>
1134<td>
1135                <p>
1136                  <span class="green">c++11</span>
1137                </p>
1138              </td>
1139<td>
1140                <p>
1141                  <span class="green">c++11</span>
1142                </p>
1143              </td>
1144<td>
1145                <p>
1146                  <span class="green">c++11</span>
1147                </p>
1148              </td>
1149<td>
1150                <p>
1151                  <span class="green">c++11</span>
1152                </p>
1153              </td>
1154<td>
1155                <p>
1156                  <span class="gold">c++11</span> (no abominables)
1157                </p>
1158              </td>
1159<td>
1160                <p>
1161                  <span class="gold">c++11</span> (no abominables)
1162                </p>
1163              </td>
1164</tr>
1165<tr>
1166<td>
1167                <p>
1168                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_invocable" title="is_invocable"><code class="literal">is_invocable</code></a>
1169                </p>
1170              </td>
1171<td>
1172                <p>
1173                  <span class="green">c++11</span>
1174                </p>
1175              </td>
1176<td>
1177                <p>
1178                  <span class="green">c++11</span>
1179                </p>
1180              </td>
1181<td>
1182                <p>
1183                  <span class="green">c++11</span>
1184                </p>
1185              </td>
1186<td>
1187                <p>
1188                  <span class="green">c++11</span>
1189                </p>
1190              </td>
1191<td>
1192                <p>
1193                  <span class="green">c++11</span>
1194                </p>
1195              </td>
1196<td>
1197                <p>
1198                  unknown
1199                </p>
1200              </td>
1201<td>
1202                <p>
1203                  unknown
1204                </p>
1205              </td>
1206</tr>
1207<tr>
1208<td>
1209                <p>
1210                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_lvalue_reference_member" title="is_lvalue_reference_member"><code class="literal">is_lvalue_reference_member</code></a>
1211                </p>
1212              </td>
1213<td>
1214                <p>
1215                  <span class="green">c++11</span>
1216                </p>
1217              </td>
1218<td>
1219                <p>
1220                  <span class="green">c++11</span>
1221                </p>
1222              </td>
1223<td>
1224                <p>
1225                  <span class="green">c++11</span>
1226                </p>
1227              </td>
1228<td>
1229                <p>
1230                  <span class="green">c++11</span>
1231                </p>
1232              </td>
1233<td>
1234                <p>
1235                  <span class="green">c++11</span>
1236                </p>
1237              </td>
1238<td>
1239                <p>
1240                  <span class="gold">c++11</span> (always false)
1241                </p>
1242              </td>
1243<td>
1244                <p>
1245                  <span class="gold">c++11</span> (always false)
1246                </p>
1247              </td>
1248</tr>
1249<tr>
1250<td>
1251                <p>
1252                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_noexcept" title="is_noexcept"><code class="literal">is_noexcept</code></a>
1253                </p>
1254              </td>
1255<td>
1256                <p>
1257                  <span class="green">c++17</span>
1258                </p>
1259              </td>
1260<td>
1261                <p>
1262                  <span class="green">c++17</span>
1263                </p>
1264              </td>
1265<td>
1266                <p>
1267                  <span class="green">c++17</span>
1268                </p>
1269              </td>
1270<td>
1271                <p>
1272                  <span class="gold">c++11</span> (always false)
1273                </p>
1274              </td>
1275<td>
1276                <p>
1277                  <span class="gold">c++11</span> (always false)
1278                </p>
1279              </td>
1280<td>
1281                <p>
1282                  <span class="gold">c++11</span> (always false)
1283                </p>
1284              </td>
1285<td>
1286                <p>
1287                  <span class="gold">c++11</span> (always false)
1288                </p>
1289              </td>
1290</tr>
1291<tr>
1292<td>
1293                <p>
1294                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_reference_member" title="is_reference_member"><code class="literal">is_reference_member</code></a>
1295                </p>
1296              </td>
1297<td>
1298                <p>
1299                  <span class="green">c++11</span>
1300                </p>
1301              </td>
1302<td>
1303                <p>
1304                  <span class="green">c++11</span>
1305                </p>
1306              </td>
1307<td>
1308                <p>
1309                  <span class="green">c++11</span>
1310                </p>
1311              </td>
1312<td>
1313                <p>
1314                  <span class="green">c++11</span>
1315                </p>
1316              </td>
1317<td>
1318                <p>
1319                  <span class="green">c++11</span>
1320                </p>
1321              </td>
1322<td>
1323                <p>
1324                  <span class="gold">c++11</span> (always false)
1325                </p>
1326              </td>
1327<td>
1328                <p>
1329                  <span class="gold">c++11</span> (always false)
1330                </p>
1331              </td>
1332</tr>
1333<tr>
1334<td>
1335                <p>
1336                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_rvalue_reference_member" title="is_rvalue_reference_member"><code class="literal">is_rvalue_reference_member</code></a>
1337                </p>
1338              </td>
1339<td>
1340                <p>
1341                  <span class="green">c++11</span>
1342                </p>
1343              </td>
1344<td>
1345                <p>
1346                  <span class="green">c++11</span>
1347                </p>
1348              </td>
1349<td>
1350                <p>
1351                  <span class="green">c++11</span>
1352                </p>
1353              </td>
1354<td>
1355                <p>
1356                  <span class="green">c++11</span>
1357                </p>
1358              </td>
1359<td>
1360                <p>
1361                  <span class="green">c++11</span>
1362                </p>
1363              </td>
1364<td>
1365                <p>
1366                  <span class="gold">c++11</span> (always false)
1367                </p>
1368              </td>
1369<td>
1370                <p>
1371                  <span class="gold">c++11</span> (always false)
1372                </p>
1373              </td>
1374</tr>
1375<tr>
1376<td>
1377                <p>
1378                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_transaction_safe" title="is_transaction_safe"><code class="literal">is_transaction_safe</code></a>
1379                </p>
1380              </td>
1381<td>
1382                <p>
1383                  <span class="gold">c++17</span> (requires -fgnu-tm)
1384                </p>
1385              </td>
1386<td>
1387                <p>
1388                  <span class="gold">c++17</span> (requires -fgnu-tm)
1389                </p>
1390              </td>
1391<td>
1392                <p>
1393                  <span class="gold">c++17</span> (requires -fgnu-tm)
1394                </p>
1395              </td>
1396<td>
1397                <p>
1398                  <span class="gold">c++11</span> (always false)
1399                </p>
1400              </td>
1401<td>
1402                <p>
1403                  <span class="gold">c++11</span> (always false)
1404                </p>
1405              </td>
1406<td>
1407                <p>
1408                  <span class="gold">c++11</span> (always false)
1409                </p>
1410              </td>
1411<td>
1412                <p>
1413                  <span class="gold">c++11</span> (always false)
1414                </p>
1415              </td>
1416</tr>
1417<tr>
1418<td>
1419                <p>
1420                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_volatile_member" title="is_volatile_member"><code class="literal">is_volatile_member</code></a>
1421                </p>
1422              </td>
1423<td>
1424                <p>
1425                  <span class="green">c++11</span>
1426                </p>
1427              </td>
1428<td>
1429                <p>
1430                  <span class="green">c++11</span>
1431                </p>
1432              </td>
1433<td>
1434                <p>
1435                  <span class="green">c++11</span>
1436                </p>
1437              </td>
1438<td>
1439                <p>
1440                  <span class="green">c++11</span>
1441                </p>
1442              </td>
1443<td>
1444                <p>
1445                  <span class="green">c++11</span>
1446                </p>
1447              </td>
1448<td>
1449                <p>
1450                  <span class="gold">c++11</span> (no abominables)
1451                </p>
1452              </td>
1453<td>
1454                <p>
1455                  <span class="gold">c++11</span> (no abominables)
1456                </p>
1457              </td>
1458</tr>
1459<tr>
1460<td>
1461                <p>
1462                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_qualified_class_of" title="qualified_class_of"><code class="literal">qualified_class_of</code></a>
1463                </p>
1464              </td>
1465<td>
1466                <p>
1467                  <span class="green">c++11</span>
1468                </p>
1469              </td>
1470<td>
1471                <p>
1472                  <span class="green">c++11</span>
1473                </p>
1474              </td>
1475<td>
1476                <p>
1477                  <span class="green">c++11</span>
1478                </p>
1479              </td>
1480<td>
1481                <p>
1482                  <span class="green">c++11</span>
1483                </p>
1484              </td>
1485<td>
1486                <p>
1487                  <span class="green">c++11</span>
1488                </p>
1489              </td>
1490<td>
1491                <p>
1492                  <span class="green">c++11</span>
1493                </p>
1494              </td>
1495<td>
1496                <p>
1497                  <span class="green">c++11</span>
1498                </p>
1499              </td>
1500</tr>
1501<tr>
1502<td>
1503                <p>
1504                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_const" title="remove_member_const"><code class="literal">remove_member_const</code></a>
1505                </p>
1506              </td>
1507<td>
1508                <p>
1509                  <span class="green">c++11</span>
1510                </p>
1511              </td>
1512<td>
1513                <p>
1514                  <span class="green">c++11</span>
1515                </p>
1516              </td>
1517<td>
1518                <p>
1519                  <span class="green">c++11</span>
1520                </p>
1521              </td>
1522<td>
1523                <p>
1524                  <span class="green">c++11</span>
1525                </p>
1526              </td>
1527<td>
1528                <p>
1529                  <span class="green">c++11</span>
1530                </p>
1531              </td>
1532<td>
1533                <p>
1534                  <span class="gold">c++11</span> (no abominables)
1535                </p>
1536              </td>
1537<td>
1538                <p>
1539                  <span class="gold">c++11</span> (no abominables)
1540                </p>
1541              </td>
1542</tr>
1543<tr>
1544<td>
1545                <p>
1546                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_cv" title="remove_member_cv"><code class="literal">remove_member_cv</code></a>
1547                </p>
1548              </td>
1549<td>
1550                <p>
1551                  <span class="green">c++11</span>
1552                </p>
1553              </td>
1554<td>
1555                <p>
1556                  <span class="green">c++11</span>
1557                </p>
1558              </td>
1559<td>
1560                <p>
1561                  <span class="green">c++11</span>
1562                </p>
1563              </td>
1564<td>
1565                <p>
1566                  <span class="green">c++11</span>
1567                </p>
1568              </td>
1569<td>
1570                <p>
1571                  <span class="green">c++11</span>
1572                </p>
1573              </td>
1574<td>
1575                <p>
1576                  <span class="gold">c++11</span> (no abominables)
1577                </p>
1578              </td>
1579<td>
1580                <p>
1581                  <span class="gold">c++11</span> (no abominables)
1582                </p>
1583              </td>
1584</tr>
1585<tr>
1586<td>
1587                <p>
1588                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_reference" title="remove_member_reference"><code class="literal">remove_member_reference</code></a>
1589                </p>
1590              </td>
1591<td>
1592                <p>
1593                  <span class="green">c++11</span>
1594                </p>
1595              </td>
1596<td>
1597                <p>
1598                  <span class="green">c++11</span>
1599                </p>
1600              </td>
1601<td>
1602                <p>
1603                  <span class="green">c++11</span>
1604                </p>
1605              </td>
1606<td>
1607                <p>
1608                  <span class="green">c++11</span>
1609                </p>
1610              </td>
1611<td>
1612                <p>
1613                  <span class="green">c++11</span>
1614                </p>
1615              </td>
1616<td>
1617                <p>
1618                  <span class="gold">c++11</span> (no effect)
1619                </p>
1620              </td>
1621<td>
1622                <p>
1623                  <span class="gold">c++11</span> (no effect)
1624                </p>
1625              </td>
1626</tr>
1627<tr>
1628<td>
1629                <p>
1630                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_volatile" title="remove_member_volatile"><code class="literal">remove_member_volatile</code></a>
1631                </p>
1632              </td>
1633<td>
1634                <p>
1635                  <span class="green">c++11</span>
1636                </p>
1637              </td>
1638<td>
1639                <p>
1640                  <span class="green">c++11</span>
1641                </p>
1642              </td>
1643<td>
1644                <p>
1645                  <span class="green">c++11</span>
1646                </p>
1647              </td>
1648<td>
1649                <p>
1650                  <span class="green">c++11</span>
1651                </p>
1652              </td>
1653<td>
1654                <p>
1655                  <span class="green">c++11</span>
1656                </p>
1657              </td>
1658<td>
1659                <p>
1660                  <span class="gold">c++11</span> (no abominables)
1661                </p>
1662              </td>
1663<td>
1664                <p>
1665                  <span class="gold">c++11</span> (no abominables)
1666                </p>
1667              </td>
1668</tr>
1669<tr>
1670<td>
1671                <p>
1672                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_noexcept" title="remove_noexcept"><code class="literal">remove_noexcept</code></a>
1673                </p>
1674              </td>
1675<td>
1676                <p>
1677                  <span class="green">c++17</span>
1678                </p>
1679              </td>
1680<td>
1681                <p>
1682                  <span class="green">c++17</span>
1683                </p>
1684              </td>
1685<td>
1686                <p>
1687                  <span class="green">c++17</span>
1688                </p>
1689              </td>
1690<td>
1691                <p>
1692                  <span class="gold">c++11</span> (no effect)
1693                </p>
1694              </td>
1695<td>
1696                <p>
1697                  <span class="gold">c++11</span> (no effect)
1698                </p>
1699              </td>
1700<td>
1701                <p>
1702                  <span class="gold">c++11</span> (no effect)
1703                </p>
1704              </td>
1705<td>
1706                <p>
1707                  <span class="gold">c++11</span> (no effect)
1708                </p>
1709              </td>
1710</tr>
1711<tr>
1712<td>
1713                <p>
1714                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_transaction_safe" title="remove_transaction_safe"><code class="literal">remove_transaction_safe</code></a>
1715                </p>
1716              </td>
1717<td>
1718                <p>
1719                  <span class="gold">c++17</span> (requires -fgnu-tm)
1720                </p>
1721              </td>
1722<td>
1723                <p>
1724                  <span class="gold">c++17</span> (requires -fgnu-tm)
1725                </p>
1726              </td>
1727<td>
1728                <p>
1729                  <span class="gold">c++17</span> (requires -fgnu-tm)
1730                </p>
1731              </td>
1732<td>
1733                <p>
1734                  <span class="gold">c++11</span> (no effect)
1735                </p>
1736              </td>
1737<td>
1738                <p>
1739                  <span class="gold">c++11</span> (no effect)
1740                </p>
1741              </td>
1742<td>
1743                <p>
1744                  <span class="gold">c++11</span> (no effect)
1745                </p>
1746              </td>
1747<td>
1748                <p>
1749                  <span class="gold">c++11</span> (no effect)
1750                </p>
1751              </td>
1752</tr>
1753<tr>
1754<td>
1755                <p>
1756                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_varargs" title="remove_varargs"><code class="literal">remove_varargs</code></a>
1757                </p>
1758              </td>
1759<td>
1760                <p>
1761                  <span class="green">c++11</span>
1762                </p>
1763              </td>
1764<td>
1765                <p>
1766                  <span class="green">c++11</span>
1767                </p>
1768              </td>
1769<td>
1770                <p>
1771                  <span class="green">c++11</span>
1772                </p>
1773              </td>
1774<td>
1775                <p>
1776                  <span class="green">c++11</span>
1777                </p>
1778              </td>
1779<td>
1780                <p>
1781                  <span class="green">c++11</span>
1782                </p>
1783              </td>
1784<td>
1785                <p>
1786                  <span class="green">c++11</span>
1787                </p>
1788              </td>
1789<td>
1790                <p>
1791                  <span class="green">c++11</span>
1792                </p>
1793              </td>
1794</tr>
1795<tr>
1796<td>
1797                <p>
1798                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_return_type" title="return_type"><code class="literal">return_type</code></a>
1799                </p>
1800              </td>
1801<td>
1802                <p>
1803                  <span class="green">c++11</span>
1804                </p>
1805              </td>
1806<td>
1807                <p>
1808                  <span class="green">c++11</span>
1809                </p>
1810              </td>
1811<td>
1812                <p>
1813                  <span class="green">c++11</span>
1814                </p>
1815              </td>
1816<td>
1817                <p>
1818                  <span class="green">c++11</span>
1819                </p>
1820              </td>
1821<td>
1822                <p>
1823                  <span class="green">c++11</span>
1824                </p>
1825              </td>
1826<td>
1827                <p>
1828                  <span class="green">c++11</span>
1829                </p>
1830              </td>
1831<td>
1832                <p>
1833                  <span class="green">c++11</span>
1834                </p>
1835              </td>
1836</tr>
1837</tbody>
1838</table></div>
1839</div>
1840<br class="table-break"><div class="table">
1841<a name="callable_traits.introduction.compatibility.llvm_clang_support"></a><p class="title"><b>Table 2. LLVM/Clang Support</b></p>
1842<div class="table-contents"><table class="table" summary="LLVM/Clang Support">
1843<colgroup>
1844<col>
1845<col>
1846<col>
1847<col>
1848<col>
1849<col>
1850<col>
1851<col>
1852<col>
1853</colgroup>
1854<thead><tr>
1855<th>
1856                <p>
1857                  feature
1858                </p>
1859              </th>
1860<th>
1861                <p>
1862                  Clang 7.0.1
1863                </p>
1864              </th>
1865<th>
1866                <p>
1867                  Clang 6.0.0
1868                </p>
1869              </th>
1870<th>
1871                <p>
1872                  Clang 5.0.1
1873                </p>
1874              </th>
1875<th>
1876                <p>
1877                  Clang 4.0.0
1878                </p>
1879              </th>
1880<th>
1881                <p>
1882                  Clang 3.8.0
1883                </p>
1884              </th>
1885<th>
1886                <p>
1887                  Clang 3.7.1
1888                </p>
1889              </th>
1890<th>
1891                <p>
1892                  Clang 3.6.2
1893                </p>
1894              </th>
1895<th>
1896                <p>
1897                  Clang 3.5.2
1898                </p>
1899              </th>
1900</tr></thead>
1901<tbody>
1902<tr>
1903<td>
1904                <p>
1905                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_const" title="add_member_const"><code class="literal">add_member_const</code></a>
1906                </p>
1907              </td>
1908<td>
1909                <p>
1910                  <span class="green">c++11</span>
1911                </p>
1912              </td>
1913<td>
1914                <p>
1915                  <span class="green">c++11</span>
1916                </p>
1917              </td>
1918<td>
1919                <p>
1920                  <span class="green">c++11</span>
1921                </p>
1922              </td>
1923<td>
1924                <p>
1925                  <span class="green">c++11</span>
1926                </p>
1927              </td>
1928<td>
1929                <p>
1930                  <span class="green">c++11</span>
1931                </p>
1932              </td>
1933<td>
1934                <p>
1935                  <span class="green">c++11</span>
1936                </p>
1937              </td>
1938<td>
1939                <p>
1940                  <span class="green">c++11</span>
1941                </p>
1942              </td>
1943<td>
1944                <p>
1945                  <span class="green">c++11</span>
1946                </p>
1947              </td>
1948</tr>
1949<tr>
1950<td>
1951                <p>
1952                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_cv" title="add_member_cv"><code class="literal">add_member_cv</code></a>
1953                </p>
1954              </td>
1955<td>
1956                <p>
1957                  <span class="green">c++11</span>
1958                </p>
1959              </td>
1960<td>
1961                <p>
1962                  <span class="green">c++11</span>
1963                </p>
1964              </td>
1965<td>
1966                <p>
1967                  <span class="green">c++11</span>
1968                </p>
1969              </td>
1970<td>
1971                <p>
1972                  <span class="green">c++11</span>
1973                </p>
1974              </td>
1975<td>
1976                <p>
1977                  <span class="green">c++11</span>
1978                </p>
1979              </td>
1980<td>
1981                <p>
1982                  <span class="green">c++11</span>
1983                </p>
1984              </td>
1985<td>
1986                <p>
1987                  <span class="green">c++11</span>
1988                </p>
1989              </td>
1990<td>
1991                <p>
1992                  <span class="green">c++11</span>
1993                </p>
1994              </td>
1995</tr>
1996<tr>
1997<td>
1998                <p>
1999                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_lvalue_reference" title="add_member_lvalue_reference"><code class="literal">add_member_lvalue_reference</code></a>
2000                </p>
2001              </td>
2002<td>
2003                <p>
2004                  <span class="green">c++11</span>
2005                </p>
2006              </td>
2007<td>
2008                <p>
2009                  <span class="green">c++11</span>
2010                </p>
2011              </td>
2012<td>
2013                <p>
2014                  <span class="green">c++11</span>
2015                </p>
2016              </td>
2017<td>
2018                <p>
2019                  <span class="green">c++11</span>
2020                </p>
2021              </td>
2022<td>
2023                <p>
2024                  <span class="green">c++11</span>
2025                </p>
2026              </td>
2027<td>
2028                <p>
2029                  <span class="green">c++11</span>
2030                </p>
2031              </td>
2032<td>
2033                <p>
2034                  <span class="green">c++11</span>
2035                </p>
2036              </td>
2037<td>
2038                <p>
2039                  <span class="green">c++11</span>
2040                </p>
2041              </td>
2042</tr>
2043<tr>
2044<td>
2045                <p>
2046                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_rvalue_reference" title="add_member_rvalue_reference"><code class="literal">add_member_rvalue_reference</code></a>
2047                </p>
2048              </td>
2049<td>
2050                <p>
2051                  <span class="green">c++11</span>
2052                </p>
2053              </td>
2054<td>
2055                <p>
2056                  <span class="green">c++11</span>
2057                </p>
2058              </td>
2059<td>
2060                <p>
2061                  <span class="green">c++11</span>
2062                </p>
2063              </td>
2064<td>
2065                <p>
2066                  <span class="green">c++11</span>
2067                </p>
2068              </td>
2069<td>
2070                <p>
2071                  <span class="green">c++11</span>
2072                </p>
2073              </td>
2074<td>
2075                <p>
2076                  <span class="green">c++11</span>
2077                </p>
2078              </td>
2079<td>
2080                <p>
2081                  <span class="green">c++11</span>
2082                </p>
2083              </td>
2084<td>
2085                <p>
2086                  <span class="green">c++11</span>
2087                </p>
2088              </td>
2089</tr>
2090<tr>
2091<td>
2092                <p>
2093                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_volatile" title="add_member_volatile"><code class="literal">add_member_volatile</code></a>
2094                </p>
2095              </td>
2096<td>
2097                <p>
2098                  <span class="green">c++11</span>
2099                </p>
2100              </td>
2101<td>
2102                <p>
2103                  <span class="green">c++11</span>
2104                </p>
2105              </td>
2106<td>
2107                <p>
2108                  <span class="green">c++11</span>
2109                </p>
2110              </td>
2111<td>
2112                <p>
2113                  <span class="green">c++11</span>
2114                </p>
2115              </td>
2116<td>
2117                <p>
2118                  <span class="green">c++11</span>
2119                </p>
2120              </td>
2121<td>
2122                <p>
2123                  <span class="green">c++11</span>
2124                </p>
2125              </td>
2126<td>
2127                <p>
2128                  <span class="green">c++11</span>
2129                </p>
2130              </td>
2131<td>
2132                <p>
2133                  <span class="green">c++11</span>
2134                </p>
2135              </td>
2136</tr>
2137<tr>
2138<td>
2139                <p>
2140                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_noexcept" title="add_noexcept"><code class="literal">add_noexcept</code></a>
2141                </p>
2142              </td>
2143<td>
2144                <p>
2145                  <span class="green">c++11</span>
2146                </p>
2147              </td>
2148<td>
2149                <p>
2150                  <span class="green">c++17</span>
2151                </p>
2152              </td>
2153<td>
2154                <p>
2155                  <span class="green">c++17</span>
2156                </p>
2157              </td>
2158<td>
2159                <p>
2160                  <span class="green">c++17</span>
2161                </p>
2162              </td>
2163<td>
2164                <p>
2165                  <span class="red">static_assert fails on instantiation</span>
2166                </p>
2167              </td>
2168<td>
2169                <p>
2170                  <span class="red">static_assert fails on instantiation</span>
2171                </p>
2172              </td>
2173<td>
2174                <p>
2175                  <span class="red">static_assert fails on instantiation</span>
2176                </p>
2177              </td>
2178<td>
2179                <p>
2180                  <span class="red">static_assert fails on instantiation</span>
2181                </p>
2182              </td>
2183</tr>
2184<tr>
2185<td>
2186                <p>
2187                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_transaction_safe" title="add_transaction_safe"><code class="literal">add_transaction_safe</code></a>
2188                </p>
2189              </td>
2190<td>
2191                <p>
2192                  unknown
2193                </p>
2194              </td>
2195<td>
2196                <p>
2197                  unknown
2198                </p>
2199              </td>
2200<td>
2201                <p>
2202                  unknown
2203                </p>
2204              </td>
2205<td>
2206                <p>
2207                  unknown
2208                </p>
2209              </td>
2210<td>
2211                <p>
2212                  <span class="red">static_assert fails on instantiation</span>
2213                </p>
2214              </td>
2215<td>
2216                <p>
2217                  <span class="red">static_assert fails on instantiation</span>
2218                </p>
2219              </td>
2220<td>
2221                <p>
2222                  <span class="red">static_assert fails on instantiation</span>
2223                </p>
2224              </td>
2225<td>
2226                <p>
2227                  <span class="red">static_assert fails on instantiation</span>
2228                </p>
2229              </td>
2230</tr>
2231<tr>
2232<td>
2233                <p>
2234                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_varargs" title="add_varargs"><code class="literal">add_varargs</code></a>
2235                </p>
2236              </td>
2237<td>
2238                <p>
2239                  <span class="green">c++11</span>
2240                </p>
2241              </td>
2242<td>
2243                <p>
2244                  <span class="green">c++11</span>
2245                </p>
2246              </td>
2247<td>
2248                <p>
2249                  <span class="green">c++11</span>
2250                </p>
2251              </td>
2252<td>
2253                <p>
2254                  <span class="green">c++11</span>
2255                </p>
2256              </td>
2257<td>
2258                <p>
2259                  <span class="green">c++11</span>
2260                </p>
2261              </td>
2262<td>
2263                <p>
2264                  <span class="green">c++11</span>
2265                </p>
2266              </td>
2267<td>
2268                <p>
2269                  <span class="green">c++11</span>
2270                </p>
2271              </td>
2272<td>
2273                <p>
2274                  <span class="green">c++11</span>
2275                </p>
2276              </td>
2277</tr>
2278<tr>
2279<td>
2280                <p>
2281                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_member_pointer" title="apply_member_pointer"><code class="literal">apply_member_pointer</code></a>
2282                </p>
2283              </td>
2284<td>
2285                <p>
2286                  <span class="green">c++11</span>
2287                </p>
2288              </td>
2289<td>
2290                <p>
2291                  <span class="green">c++11</span>
2292                </p>
2293              </td>
2294<td>
2295                <p>
2296                  <span class="green">c++11</span>
2297                </p>
2298              </td>
2299<td>
2300                <p>
2301                  <span class="green">c++11</span>
2302                </p>
2303              </td>
2304<td>
2305                <p>
2306                  <span class="green">c++11</span>
2307                </p>
2308              </td>
2309<td>
2310                <p>
2311                  <span class="green">c++11</span>
2312                </p>
2313              </td>
2314<td>
2315                <p>
2316                  <span class="green">c++11</span>
2317                </p>
2318              </td>
2319<td>
2320                <p>
2321                  <span class="green">c++11</span>
2322                </p>
2323              </td>
2324</tr>
2325<tr>
2326<td>
2327                <p>
2328                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_return" title="apply_return"><code class="literal">apply_return</code></a>
2329                </p>
2330              </td>
2331<td>
2332                <p>
2333                  <span class="green">c++11</span>
2334                </p>
2335              </td>
2336<td>
2337                <p>
2338                  <span class="green">c++11</span>
2339                </p>
2340              </td>
2341<td>
2342                <p>
2343                  <span class="green">c++11</span>
2344                </p>
2345              </td>
2346<td>
2347                <p>
2348                  <span class="green">c++11</span>
2349                </p>
2350              </td>
2351<td>
2352                <p>
2353                  <span class="green">c++11</span>
2354                </p>
2355              </td>
2356<td>
2357                <p>
2358                  <span class="green">c++11</span>
2359                </p>
2360              </td>
2361<td>
2362                <p>
2363                  <span class="green">c++11</span>
2364                </p>
2365              </td>
2366<td>
2367                <p>
2368                  <span class="green">c++11</span>
2369                </p>
2370              </td>
2371</tr>
2372<tr>
2373<td>
2374                <p>
2375                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_args" title="args"><code class="literal">args</code></a>
2376                </p>
2377              </td>
2378<td>
2379                <p>
2380                  <span class="green">c++11</span>
2381                </p>
2382              </td>
2383<td>
2384                <p>
2385                  <span class="green">c++11</span>
2386                </p>
2387              </td>
2388<td>
2389                <p>
2390                  <span class="green">c++11</span>
2391                </p>
2392              </td>
2393<td>
2394                <p>
2395                  <span class="green">c++11</span>
2396                </p>
2397              </td>
2398<td>
2399                <p>
2400                  <span class="green">c++11</span>
2401                </p>
2402              </td>
2403<td>
2404                <p>
2405                  <span class="green">c++11</span>
2406                </p>
2407              </td>
2408<td>
2409                <p>
2410                  <span class="green">c++11</span>
2411                </p>
2412              </td>
2413<td>
2414                <p>
2415                  <span class="green">c++11</span>
2416                </p>
2417              </td>
2418</tr>
2419<tr>
2420<td>
2421                <p>
2422                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_class_of" title="class_of"><code class="literal">class_of</code></a>
2423                </p>
2424              </td>
2425<td>
2426                <p>
2427                  <span class="green">c++11</span>
2428                </p>
2429              </td>
2430<td>
2431                <p>
2432                  <span class="green">c++11</span>
2433                </p>
2434              </td>
2435<td>
2436                <p>
2437                  <span class="green">c++11</span>
2438                </p>
2439              </td>
2440<td>
2441                <p>
2442                  <span class="green">c++11</span>
2443                </p>
2444              </td>
2445<td>
2446                <p>
2447                  <span class="green">c++11</span>
2448                </p>
2449              </td>
2450<td>
2451                <p>
2452                  <span class="green">c++11</span>
2453                </p>
2454              </td>
2455<td>
2456                <p>
2457                  <span class="green">c++11</span>
2458                </p>
2459              </td>
2460<td>
2461                <p>
2462                  <span class="green">c++11</span>
2463                </p>
2464              </td>
2465</tr>
2466<tr>
2467<td>
2468                <p>
2469                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_function_type" title="function_type"><code class="literal">function_type</code></a>
2470                </p>
2471              </td>
2472<td>
2473                <p>
2474                  <span class="green">c++11</span>
2475                </p>
2476              </td>
2477<td>
2478                <p>
2479                  <span class="green">c++11</span>
2480                </p>
2481              </td>
2482<td>
2483                <p>
2484                  <span class="green">c++11</span>
2485                </p>
2486              </td>
2487<td>
2488                <p>
2489                  <span class="green">c++11</span>
2490                </p>
2491              </td>
2492<td>
2493                <p>
2494                  <span class="green">c++11</span>
2495                </p>
2496              </td>
2497<td>
2498                <p>
2499                  <span class="green">c++11</span>
2500                </p>
2501              </td>
2502<td>
2503                <p>
2504                  <span class="green">c++11</span>
2505                </p>
2506              </td>
2507<td>
2508                <p>
2509                  <span class="green">c++11</span>
2510                </p>
2511              </td>
2512</tr>
2513<tr>
2514<td>
2515                <p>
2516                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_member_qualifiers" title="has_member_qualifiers"><code class="literal">has_member_qualifiers</code></a>
2517                </p>
2518              </td>
2519<td>
2520                <p>
2521                  <span class="green">c++11</span>
2522                </p>
2523              </td>
2524<td>
2525                <p>
2526                  <span class="green">c++11</span>
2527                </p>
2528              </td>
2529<td>
2530                <p>
2531                  <span class="green">c++11</span>
2532                </p>
2533              </td>
2534<td>
2535                <p>
2536                  <span class="green">c++11</span>
2537                </p>
2538              </td>
2539<td>
2540                <p>
2541                  <span class="green">c++11</span>
2542                </p>
2543              </td>
2544<td>
2545                <p>
2546                  <span class="green">c++11</span>
2547                </p>
2548              </td>
2549<td>
2550                <p>
2551                  <span class="green">c++11</span>
2552                </p>
2553              </td>
2554<td>
2555                <p>
2556                  <span class="green">c++11</span>
2557                </p>
2558              </td>
2559</tr>
2560<tr>
2561<td>
2562                <p>
2563                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_varargs" title="has_varargs"><code class="literal">has_varargs</code></a>
2564                </p>
2565              </td>
2566<td>
2567                <p>
2568                  <span class="green">c++11</span>
2569                </p>
2570              </td>
2571<td>
2572                <p>
2573                  <span class="green">c++11</span>
2574                </p>
2575              </td>
2576<td>
2577                <p>
2578                  <span class="green">c++11</span>
2579                </p>
2580              </td>
2581<td>
2582                <p>
2583                  <span class="green">c++11</span>
2584                </p>
2585              </td>
2586<td>
2587                <p>
2588                  <span class="green">c++11</span>
2589                </p>
2590              </td>
2591<td>
2592                <p>
2593                  <span class="green">c++11</span>
2594                </p>
2595              </td>
2596<td>
2597                <p>
2598                  <span class="green">c++11</span>
2599                </p>
2600              </td>
2601<td>
2602                <p>
2603                  <span class="green">c++11</span>
2604                </p>
2605              </td>
2606</tr>
2607<tr>
2608<td>
2609                <p>
2610                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_void_return" title="has_void_return"><code class="literal">has_void_return</code></a>
2611                </p>
2612              </td>
2613<td>
2614                <p>
2615                  <span class="green">c++11</span>
2616                </p>
2617              </td>
2618<td>
2619                <p>
2620                  <span class="green">c++11</span>
2621                </p>
2622              </td>
2623<td>
2624                <p>
2625                  <span class="green">c++11</span>
2626                </p>
2627              </td>
2628<td>
2629                <p>
2630                  <span class="green">c++11</span>
2631                </p>
2632              </td>
2633<td>
2634                <p>
2635                  <span class="green">c++11</span>
2636                </p>
2637              </td>
2638<td>
2639                <p>
2640                  <span class="green">c++11</span>
2641                </p>
2642              </td>
2643<td>
2644                <p>
2645                  <span class="green">c++11</span>
2646                </p>
2647              </td>
2648<td>
2649                <p>
2650                  <span class="green">c++11</span>
2651                </p>
2652              </td>
2653</tr>
2654<tr>
2655<td>
2656                <p>
2657                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_const_member" title="is_const_member"><code class="literal">is_const_member</code></a>
2658                </p>
2659              </td>
2660<td>
2661                <p>
2662                  <span class="green">c++11</span>
2663                </p>
2664              </td>
2665<td>
2666                <p>
2667                  <span class="green">c++11</span>
2668                </p>
2669              </td>
2670<td>
2671                <p>
2672                  <span class="green">c++11</span>
2673                </p>
2674              </td>
2675<td>
2676                <p>
2677                  <span class="green">c++11</span>
2678                </p>
2679              </td>
2680<td>
2681                <p>
2682                  <span class="green">c++11</span>
2683                </p>
2684              </td>
2685<td>
2686                <p>
2687                  <span class="green">c++11</span>
2688                </p>
2689              </td>
2690<td>
2691                <p>
2692                  <span class="green">c++11</span>
2693                </p>
2694              </td>
2695<td>
2696                <p>
2697                  <span class="green">c++11</span>
2698                </p>
2699              </td>
2700</tr>
2701<tr>
2702<td>
2703                <p>
2704                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_cv_member" title="is_cv_member"><code class="literal">is_cv_member</code></a>
2705                </p>
2706              </td>
2707<td>
2708                <p>
2709                  <span class="green">c++11</span>
2710                </p>
2711              </td>
2712<td>
2713                <p>
2714                  <span class="green">c++11</span>
2715                </p>
2716              </td>
2717<td>
2718                <p>
2719                  <span class="green">c++11</span>
2720                </p>
2721              </td>
2722<td>
2723                <p>
2724                  <span class="green">c++11</span>
2725                </p>
2726              </td>
2727<td>
2728                <p>
2729                  <span class="green">c++11</span>
2730                </p>
2731              </td>
2732<td>
2733                <p>
2734                  <span class="green">c++11</span>
2735                </p>
2736              </td>
2737<td>
2738                <p>
2739                  <span class="green">c++11</span>
2740                </p>
2741              </td>
2742<td>
2743                <p>
2744                  <span class="green">c++11</span>
2745                </p>
2746              </td>
2747</tr>
2748<tr>
2749<td>
2750                <p>
2751                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_invocable" title="is_invocable"><code class="literal">is_invocable</code></a>
2752                </p>
2753              </td>
2754<td>
2755                <p>
2756                  <span class="green">c++11</span>
2757                </p>
2758              </td>
2759<td>
2760                <p>
2761                  <span class="green">c++11</span>
2762                </p>
2763              </td>
2764<td>
2765                <p>
2766                  <span class="green">c++11</span>
2767                </p>
2768              </td>
2769<td>
2770                <p>
2771                  <span class="green">c++11</span>
2772                </p>
2773              </td>
2774<td>
2775                <p>
2776                  <span class="green">c++11</span>
2777                </p>
2778              </td>
2779<td>
2780                <p>
2781                  <span class="green">c++11</span>
2782                </p>
2783              </td>
2784<td>
2785                <p>
2786                  <span class="green">c++11</span>
2787                </p>
2788              </td>
2789<td>
2790                <p>
2791                  <span class="green">c++11</span>
2792                </p>
2793              </td>
2794</tr>
2795<tr>
2796<td>
2797                <p>
2798                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_lvalue_reference_member" title="is_lvalue_reference_member"><code class="literal">is_lvalue_reference_member</code></a>
2799                </p>
2800              </td>
2801<td>
2802                <p>
2803                  <span class="green">c++11</span>
2804                </p>
2805              </td>
2806<td>
2807                <p>
2808                  <span class="green">c++11</span>
2809                </p>
2810              </td>
2811<td>
2812                <p>
2813                  <span class="green">c++11</span>
2814                </p>
2815              </td>
2816<td>
2817                <p>
2818                  <span class="green">c++11</span>
2819                </p>
2820              </td>
2821<td>
2822                <p>
2823                  <span class="green">c++11</span>
2824                </p>
2825              </td>
2826<td>
2827                <p>
2828                  <span class="green">c++11</span>
2829                </p>
2830              </td>
2831<td>
2832                <p>
2833                  <span class="green">c++11</span>
2834                </p>
2835              </td>
2836<td>
2837                <p>
2838                  <span class="green">c++11</span>
2839                </p>
2840              </td>
2841</tr>
2842<tr>
2843<td>
2844                <p>
2845                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_noexcept" title="is_noexcept"><code class="literal">is_noexcept</code></a>
2846                </p>
2847              </td>
2848<td>
2849                <p>
2850                  <span class="green">c++17</span>
2851                </p>
2852              </td>
2853<td>
2854                <p>
2855                  <span class="green">c++17</span>
2856                </p>
2857              </td>
2858<td>
2859                <p>
2860                  <span class="green">c++17</span>
2861                </p>
2862              </td>
2863<td>
2864                <p>
2865                  <span class="green">c++17</span>
2866                </p>
2867              </td>
2868<td>
2869                <p>
2870                  <span class="gold">c++11</span> (always false)
2871                </p>
2872              </td>
2873<td>
2874                <p>
2875                  <span class="gold">c++11</span> (always false)
2876                </p>
2877              </td>
2878<td>
2879                <p>
2880                  <span class="gold">c++11</span> (always false)
2881                </p>
2882              </td>
2883<td>
2884                <p>
2885                  <span class="gold">c++11</span> (always false)
2886                </p>
2887              </td>
2888</tr>
2889<tr>
2890<td>
2891                <p>
2892                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_reference_member" title="is_reference_member"><code class="literal">is_reference_member</code></a>
2893                </p>
2894              </td>
2895<td>
2896                <p>
2897                  <span class="green">c++11</span>
2898                </p>
2899              </td>
2900<td>
2901                <p>
2902                  <span class="green">c++11</span>
2903                </p>
2904              </td>
2905<td>
2906                <p>
2907                  <span class="green">c++11</span>
2908                </p>
2909              </td>
2910<td>
2911                <p>
2912                  <span class="green">c++11</span>
2913                </p>
2914              </td>
2915<td>
2916                <p>
2917                  <span class="green">c++11</span>
2918                </p>
2919              </td>
2920<td>
2921                <p>
2922                  <span class="green">c++11</span>
2923                </p>
2924              </td>
2925<td>
2926                <p>
2927                  <span class="green">c++11</span>
2928                </p>
2929              </td>
2930<td>
2931                <p>
2932                  <span class="green">c++11</span>
2933                </p>
2934              </td>
2935</tr>
2936<tr>
2937<td>
2938                <p>
2939                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_rvalue_reference_member" title="is_rvalue_reference_member"><code class="literal">is_rvalue_reference_member</code></a>
2940                </p>
2941              </td>
2942<td>
2943                <p>
2944                  <span class="green">c++11</span>
2945                </p>
2946              </td>
2947<td>
2948                <p>
2949                  <span class="green">c++11</span>
2950                </p>
2951              </td>
2952<td>
2953                <p>
2954                  <span class="green">c++11</span>
2955                </p>
2956              </td>
2957<td>
2958                <p>
2959                  <span class="green">c++11</span>
2960                </p>
2961              </td>
2962<td>
2963                <p>
2964                  <span class="green">c++11</span>
2965                </p>
2966              </td>
2967<td>
2968                <p>
2969                  <span class="green">c++11</span>
2970                </p>
2971              </td>
2972<td>
2973                <p>
2974                  <span class="green">c++11</span>
2975                </p>
2976              </td>
2977<td>
2978                <p>
2979                  <span class="green">c++11</span>
2980                </p>
2981              </td>
2982</tr>
2983<tr>
2984<td>
2985                <p>
2986                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_transaction_safe" title="is_transaction_safe"><code class="literal">is_transaction_safe</code></a>
2987                </p>
2988              </td>
2989<td>
2990                <p>
2991                  unknown
2992                </p>
2993              </td>
2994<td>
2995                <p>
2996                  unknown
2997                </p>
2998              </td>
2999<td>
3000                <p>
3001                  unknown
3002                </p>
3003              </td>
3004<td>
3005                <p>
3006                  unknown
3007                </p>
3008              </td>
3009<td>
3010                <p>
3011                  <span class="gold">c++11</span> (always false)
3012                </p>
3013              </td>
3014<td>
3015                <p>
3016                  <span class="gold">c++11</span> (always false)
3017                </p>
3018              </td>
3019<td>
3020                <p>
3021                  <span class="gold">c++11</span> (always false)
3022                </p>
3023              </td>
3024<td>
3025                <p>
3026                  <span class="gold">c++11</span> (always false)
3027                </p>
3028              </td>
3029</tr>
3030<tr>
3031<td>
3032                <p>
3033                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_volatile_member" title="is_volatile_member"><code class="literal">is_volatile_member</code></a>
3034                </p>
3035              </td>
3036<td>
3037                <p>
3038                  <span class="green">c++11</span>
3039                </p>
3040              </td>
3041<td>
3042                <p>
3043                  <span class="green">c++11</span>
3044                </p>
3045              </td>
3046<td>
3047                <p>
3048                  <span class="green">c++11</span>
3049                </p>
3050              </td>
3051<td>
3052                <p>
3053                  <span class="green">c++11</span>
3054                </p>
3055              </td>
3056<td>
3057                <p>
3058                  <span class="green">c++11</span>
3059                </p>
3060              </td>
3061<td>
3062                <p>
3063                  <span class="green">c++11</span>
3064                </p>
3065              </td>
3066<td>
3067                <p>
3068                  <span class="green">c++11</span>
3069                </p>
3070              </td>
3071<td>
3072                <p>
3073                  <span class="green">c++11</span>
3074                </p>
3075              </td>
3076</tr>
3077<tr>
3078<td>
3079                <p>
3080                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_qualified_class_of" title="qualified_class_of"><code class="literal">qualified_class_of</code></a>
3081                </p>
3082              </td>
3083<td>
3084                <p>
3085                  <span class="green">c++11</span>
3086                </p>
3087              </td>
3088<td>
3089                <p>
3090                  <span class="green">c++11</span>
3091                </p>
3092              </td>
3093<td>
3094                <p>
3095                  <span class="green">c++11</span>
3096                </p>
3097              </td>
3098<td>
3099                <p>
3100                  <span class="green">c++11</span>
3101                </p>
3102              </td>
3103<td>
3104                <p>
3105                  <span class="green">c++11</span>
3106                </p>
3107              </td>
3108<td>
3109                <p>
3110                  <span class="green">c++11</span>
3111                </p>
3112              </td>
3113<td>
3114                <p>
3115                  <span class="green">c++11</span>
3116                </p>
3117              </td>
3118<td>
3119                <p>
3120                  <span class="green">c++11</span>
3121                </p>
3122              </td>
3123</tr>
3124<tr>
3125<td>
3126                <p>
3127                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_const" title="remove_member_const"><code class="literal">remove_member_const</code></a>
3128                </p>
3129              </td>
3130<td>
3131                <p>
3132                  <span class="green">c++11</span>
3133                </p>
3134              </td>
3135<td>
3136                <p>
3137                  <span class="green">c++11</span>
3138                </p>
3139              </td>
3140<td>
3141                <p>
3142                  <span class="green">c++11</span>
3143                </p>
3144              </td>
3145<td>
3146                <p>
3147                  <span class="green">c++11</span>
3148                </p>
3149              </td>
3150<td>
3151                <p>
3152                  <span class="green">c++11</span>
3153                </p>
3154              </td>
3155<td>
3156                <p>
3157                  <span class="green">c++11</span>
3158                </p>
3159              </td>
3160<td>
3161                <p>
3162                  <span class="green">c++11</span>
3163                </p>
3164              </td>
3165<td>
3166                <p>
3167                  <span class="green">c++11</span>
3168                </p>
3169              </td>
3170</tr>
3171<tr>
3172<td>
3173                <p>
3174                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_cv" title="remove_member_cv"><code class="literal">remove_member_cv</code></a>
3175                </p>
3176              </td>
3177<td>
3178                <p>
3179                  <span class="green">c++11</span>
3180                </p>
3181              </td>
3182<td>
3183                <p>
3184                  <span class="green">c++11</span>
3185                </p>
3186              </td>
3187<td>
3188                <p>
3189                  <span class="green">c++11</span>
3190                </p>
3191              </td>
3192<td>
3193                <p>
3194                  <span class="green">c++11</span>
3195                </p>
3196              </td>
3197<td>
3198                <p>
3199                  <span class="green">c++11</span>
3200                </p>
3201              </td>
3202<td>
3203                <p>
3204                  <span class="green">c++11</span>
3205                </p>
3206              </td>
3207<td>
3208                <p>
3209                  <span class="green">c++11</span>
3210                </p>
3211              </td>
3212<td>
3213                <p>
3214                  <span class="green">c++11</span>
3215                </p>
3216              </td>
3217</tr>
3218<tr>
3219<td>
3220                <p>
3221                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_reference" title="remove_member_reference"><code class="literal">remove_member_reference</code></a>
3222                </p>
3223              </td>
3224<td>
3225                <p>
3226                  <span class="green">c++11</span>
3227                </p>
3228              </td>
3229<td>
3230                <p>
3231                  <span class="green">c++11</span>
3232                </p>
3233              </td>
3234<td>
3235                <p>
3236                  <span class="green">c++11</span>
3237                </p>
3238              </td>
3239<td>
3240                <p>
3241                  <span class="green">c++11</span>
3242                </p>
3243              </td>
3244<td>
3245                <p>
3246                  <span class="green">c++11</span>
3247                </p>
3248              </td>
3249<td>
3250                <p>
3251                  <span class="green">c++11</span>
3252                </p>
3253              </td>
3254<td>
3255                <p>
3256                  <span class="green">c++11</span>
3257                </p>
3258              </td>
3259<td>
3260                <p>
3261                  <span class="green">c++11</span>
3262                </p>
3263              </td>
3264</tr>
3265<tr>
3266<td>
3267                <p>
3268                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_volatile" title="remove_member_volatile"><code class="literal">remove_member_volatile</code></a>
3269                </p>
3270              </td>
3271<td>
3272                <p>
3273                  <span class="green">c++11</span>
3274                </p>
3275              </td>
3276<td>
3277                <p>
3278                  <span class="green">c++11</span>
3279                </p>
3280              </td>
3281<td>
3282                <p>
3283                  <span class="green">c++11</span>
3284                </p>
3285              </td>
3286<td>
3287                <p>
3288                  <span class="green">c++11</span>
3289                </p>
3290              </td>
3291<td>
3292                <p>
3293                  <span class="green">c++11</span>
3294                </p>
3295              </td>
3296<td>
3297                <p>
3298                  <span class="green">c++11</span>
3299                </p>
3300              </td>
3301<td>
3302                <p>
3303                  <span class="green">c++11</span>
3304                </p>
3305              </td>
3306<td>
3307                <p>
3308                  <span class="green">c++11</span>
3309                </p>
3310              </td>
3311</tr>
3312<tr>
3313<td>
3314                <p>
3315                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_noexcept" title="remove_noexcept"><code class="literal">remove_noexcept</code></a>
3316                </p>
3317              </td>
3318<td>
3319                <p>
3320                  <span class="green">c++17</span>
3321                </p>
3322              </td>
3323<td>
3324                <p>
3325                  <span class="green">c++17</span>
3326                </p>
3327              </td>
3328<td>
3329                <p>
3330                  <span class="green">c++17</span>
3331                </p>
3332              </td>
3333<td>
3334                <p>
3335                  <span class="green">c++17</span>
3336                </p>
3337              </td>
3338<td>
3339                <p>
3340                  <span class="gold">c++11</span> (no effect)
3341                </p>
3342              </td>
3343<td>
3344                <p>
3345                  <span class="gold">c++11</span> (no effect)
3346                </p>
3347              </td>
3348<td>
3349                <p>
3350                  <span class="gold">c++11</span> (no effect)
3351                </p>
3352              </td>
3353<td>
3354                <p>
3355                  <span class="gold">c++11</span> (no effect)
3356                </p>
3357              </td>
3358</tr>
3359<tr>
3360<td>
3361                <p>
3362                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_transaction_safe" title="remove_transaction_safe"><code class="literal">remove_transaction_safe</code></a>
3363                </p>
3364              </td>
3365<td>
3366                <p>
3367                  unknown
3368                </p>
3369              </td>
3370<td>
3371                <p>
3372                  unknown
3373                </p>
3374              </td>
3375<td>
3376                <p>
3377                  unknown
3378                </p>
3379              </td>
3380<td>
3381                <p>
3382                  unknown
3383                </p>
3384              </td>
3385<td>
3386                <p>
3387                  <span class="gold">c++11</span> (no effect)
3388                </p>
3389              </td>
3390<td>
3391                <p>
3392                  <span class="gold">c++11</span> (no effect)
3393                </p>
3394              </td>
3395<td>
3396                <p>
3397                  <span class="gold">c++11</span> (no effect)
3398                </p>
3399              </td>
3400<td>
3401                <p>
3402                  <span class="gold">c++11</span> (no effect)
3403                </p>
3404              </td>
3405</tr>
3406<tr>
3407<td>
3408                <p>
3409                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_varargs" title="remove_varargs"><code class="literal">remove_varargs</code></a>
3410                </p>
3411              </td>
3412<td>
3413                <p>
3414                  <span class="green">c++11</span>
3415                </p>
3416              </td>
3417<td>
3418                <p>
3419                  <span class="green">c++11</span>
3420                </p>
3421              </td>
3422<td>
3423                <p>
3424                  <span class="green">c++11</span>
3425                </p>
3426              </td>
3427<td>
3428                <p>
3429                  <span class="green">c++11</span>
3430                </p>
3431              </td>
3432<td>
3433                <p>
3434                  <span class="green">c++11</span>
3435                </p>
3436              </td>
3437<td>
3438                <p>
3439                  <span class="green">c++11</span>
3440                </p>
3441              </td>
3442<td>
3443                <p>
3444                  <span class="green">c++11</span>
3445                </p>
3446              </td>
3447<td>
3448                <p>
3449                  <span class="green">c++11</span>
3450                </p>
3451              </td>
3452</tr>
3453<tr>
3454<td>
3455                <p>
3456                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_return_type" title="return_type"><code class="literal">return_type</code></a>
3457                </p>
3458              </td>
3459<td>
3460                <p>
3461                  <span class="green">c++11</span>
3462                </p>
3463              </td>
3464<td>
3465                <p>
3466                  <span class="green">c++11</span>
3467                </p>
3468              </td>
3469<td>
3470                <p>
3471                  <span class="green">c++11</span>
3472                </p>
3473              </td>
3474<td>
3475                <p>
3476                  <span class="green">c++11</span>
3477                </p>
3478              </td>
3479<td>
3480                <p>
3481                  <span class="green">c++11</span>
3482                </p>
3483              </td>
3484<td>
3485                <p>
3486                  <span class="green">c++11</span>
3487                </p>
3488              </td>
3489<td>
3490                <p>
3491                  <span class="green">c++11</span>
3492                </p>
3493              </td>
3494<td>
3495                <p>
3496                  <span class="green">c++11</span>
3497                </p>
3498              </td>
3499</tr>
3500</tbody>
3501</table></div>
3502</div>
3503<br class="table-break"><div class="table">
3504<a name="callable_traits.introduction.compatibility.xcode_appleclang_support"></a><p class="title"><b>Table 3. XCode/AppleClang Support</b></p>
3505<div class="table-contents"><table class="table" summary="XCode/AppleClang Support">
3506<colgroup>
3507<col>
3508<col>
3509<col>
3510<col>
3511<col>
3512<col>
3513</colgroup>
3514<thead><tr>
3515<th>
3516                <p>
3517                  feature
3518                </p>
3519              </th>
3520<th>
3521                <p>
3522                  XCode 8
3523                </p>
3524              </th>
3525<th>
3526                <p>
3527                  XCode 7.3
3528                </p>
3529              </th>
3530<th>
3531                <p>
3532                  XCode 7.2
3533                </p>
3534              </th>
3535<th>
3536                <p>
3537                  XCode 7.1
3538                </p>
3539              </th>
3540<th>
3541                <p>
3542                  XCode 6.4
3543                </p>
3544              </th>
3545</tr></thead>
3546<tbody>
3547<tr>
3548<td>
3549                <p>
3550                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_const" title="add_member_const"><code class="literal">add_member_const</code></a>
3551                </p>
3552              </td>
3553<td>
3554                <p>
3555                  <span class="green">c++11</span>
3556                </p>
3557              </td>
3558<td>
3559                <p>
3560                  <span class="green">c++11</span>
3561                </p>
3562              </td>
3563<td>
3564                <p>
3565                  <span class="green">c++11</span>
3566                </p>
3567              </td>
3568<td>
3569                <p>
3570                  <span class="green">c++11</span>
3571                </p>
3572              </td>
3573<td>
3574                <p>
3575                  <span class="green">c++11</span>
3576                </p>
3577              </td>
3578</tr>
3579<tr>
3580<td>
3581                <p>
3582                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_cv" title="add_member_cv"><code class="literal">add_member_cv</code></a>
3583                </p>
3584              </td>
3585<td>
3586                <p>
3587                  <span class="green">c++11</span>
3588                </p>
3589              </td>
3590<td>
3591                <p>
3592                  <span class="green">c++11</span>
3593                </p>
3594              </td>
3595<td>
3596                <p>
3597                  <span class="green">c++11</span>
3598                </p>
3599              </td>
3600<td>
3601                <p>
3602                  <span class="green">c++11</span>
3603                </p>
3604              </td>
3605<td>
3606                <p>
3607                  <span class="green">c++11</span>
3608                </p>
3609              </td>
3610</tr>
3611<tr>
3612<td>
3613                <p>
3614                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_lvalue_reference" title="add_member_lvalue_reference"><code class="literal">add_member_lvalue_reference</code></a>
3615                </p>
3616              </td>
3617<td>
3618                <p>
3619                  <span class="green">c++11</span>
3620                </p>
3621              </td>
3622<td>
3623                <p>
3624                  <span class="green">c++11</span>
3625                </p>
3626              </td>
3627<td>
3628                <p>
3629                  <span class="green">c++11</span>
3630                </p>
3631              </td>
3632<td>
3633                <p>
3634                  <span class="green">c++11</span>
3635                </p>
3636              </td>
3637<td>
3638                <p>
3639                  <span class="green">c++11</span>
3640                </p>
3641              </td>
3642</tr>
3643<tr>
3644<td>
3645                <p>
3646                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_rvalue_reference" title="add_member_rvalue_reference"><code class="literal">add_member_rvalue_reference</code></a>
3647                </p>
3648              </td>
3649<td>
3650                <p>
3651                  <span class="green">c++11</span>
3652                </p>
3653              </td>
3654<td>
3655                <p>
3656                  <span class="green">c++11</span>
3657                </p>
3658              </td>
3659<td>
3660                <p>
3661                  <span class="green">c++11</span>
3662                </p>
3663              </td>
3664<td>
3665                <p>
3666                  <span class="green">c++11</span>
3667                </p>
3668              </td>
3669<td>
3670                <p>
3671                  <span class="green">c++11</span>
3672                </p>
3673              </td>
3674</tr>
3675<tr>
3676<td>
3677                <p>
3678                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_volatile" title="add_member_volatile"><code class="literal">add_member_volatile</code></a>
3679                </p>
3680              </td>
3681<td>
3682                <p>
3683                  <span class="green">c++11</span>
3684                </p>
3685              </td>
3686<td>
3687                <p>
3688                  <span class="green">c++11</span>
3689                </p>
3690              </td>
3691<td>
3692                <p>
3693                  <span class="green">c++11</span>
3694                </p>
3695              </td>
3696<td>
3697                <p>
3698                  <span class="green">c++11</span>
3699                </p>
3700              </td>
3701<td>
3702                <p>
3703                  <span class="green">c++11</span>
3704                </p>
3705              </td>
3706</tr>
3707<tr>
3708<td>
3709                <p>
3710                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_noexcept" title="add_noexcept"><code class="literal">add_noexcept</code></a>
3711                </p>
3712              </td>
3713<td>
3714                <p>
3715                  unknown
3716                </p>
3717              </td>
3718<td>
3719                <p>
3720                  <span class="red">static_assert fails on instantiation</span>
3721                </p>
3722              </td>
3723<td>
3724                <p>
3725                  <span class="red">static_assert fails on instantiation</span>
3726                </p>
3727              </td>
3728<td>
3729                <p>
3730                  <span class="red">static_assert fails on instantiation</span>
3731                </p>
3732              </td>
3733<td>
3734                <p>
3735                  <span class="red">static_assert fails on instantiation</span>
3736                </p>
3737              </td>
3738</tr>
3739<tr>
3740<td>
3741                <p>
3742                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_transaction_safe" title="add_transaction_safe"><code class="literal">add_transaction_safe</code></a>
3743                </p>
3744              </td>
3745<td>
3746                <p>
3747                  unknown
3748                </p>
3749              </td>
3750<td>
3751                <p>
3752                  <span class="red">static_assert fails on instantiation</span>
3753                </p>
3754              </td>
3755<td>
3756                <p>
3757                  <span class="red">static_assert fails on instantiation</span>
3758                </p>
3759              </td>
3760<td>
3761                <p>
3762                  <span class="red">static_assert fails on instantiation</span>
3763                </p>
3764              </td>
3765<td>
3766                <p>
3767                  <span class="red">static_assert fails on instantiation</span>
3768                </p>
3769              </td>
3770</tr>
3771<tr>
3772<td>
3773                <p>
3774                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_varargs" title="add_varargs"><code class="literal">add_varargs</code></a>
3775                </p>
3776              </td>
3777<td>
3778                <p>
3779                  <span class="green">c++11</span>
3780                </p>
3781              </td>
3782<td>
3783                <p>
3784                  <span class="green">c++11</span>
3785                </p>
3786              </td>
3787<td>
3788                <p>
3789                  <span class="green">c++11</span>
3790                </p>
3791              </td>
3792<td>
3793                <p>
3794                  <span class="green">c++11</span>
3795                </p>
3796              </td>
3797<td>
3798                <p>
3799                  <span class="green">c++11</span>
3800                </p>
3801              </td>
3802</tr>
3803<tr>
3804<td>
3805                <p>
3806                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_member_pointer" title="apply_member_pointer"><code class="literal">apply_member_pointer</code></a>
3807                </p>
3808              </td>
3809<td>
3810                <p>
3811                  <span class="green">c++11</span>
3812                </p>
3813              </td>
3814<td>
3815                <p>
3816                  <span class="green">c++11</span>
3817                </p>
3818              </td>
3819<td>
3820                <p>
3821                  <span class="green">c++11</span>
3822                </p>
3823              </td>
3824<td>
3825                <p>
3826                  <span class="green">c++11</span>
3827                </p>
3828              </td>
3829<td>
3830                <p>
3831                  <span class="green">c++11</span>
3832                </p>
3833              </td>
3834</tr>
3835<tr>
3836<td>
3837                <p>
3838                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_return" title="apply_return"><code class="literal">apply_return</code></a>
3839                </p>
3840              </td>
3841<td>
3842                <p>
3843                  <span class="green">c++11</span>
3844                </p>
3845              </td>
3846<td>
3847                <p>
3848                  <span class="green">c++11</span>
3849                </p>
3850              </td>
3851<td>
3852                <p>
3853                  <span class="green">c++11</span>
3854                </p>
3855              </td>
3856<td>
3857                <p>
3858                  <span class="green">c++11</span>
3859                </p>
3860              </td>
3861<td>
3862                <p>
3863                  <span class="green">c++11</span>
3864                </p>
3865              </td>
3866</tr>
3867<tr>
3868<td>
3869                <p>
3870                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_args" title="args"><code class="literal">args</code></a>
3871                </p>
3872              </td>
3873<td>
3874                <p>
3875                  <span class="green">c++11</span>
3876                </p>
3877              </td>
3878<td>
3879                <p>
3880                  <span class="green">c++11</span>
3881                </p>
3882              </td>
3883<td>
3884                <p>
3885                  <span class="green">c++11</span>
3886                </p>
3887              </td>
3888<td>
3889                <p>
3890                  <span class="green">c++11</span>
3891                </p>
3892              </td>
3893<td>
3894                <p>
3895                  <span class="green">c++11</span>
3896                </p>
3897              </td>
3898</tr>
3899<tr>
3900<td>
3901                <p>
3902                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_class_of" title="class_of"><code class="literal">class_of</code></a>
3903                </p>
3904              </td>
3905<td>
3906                <p>
3907                  <span class="green">c++11</span>
3908                </p>
3909              </td>
3910<td>
3911                <p>
3912                  <span class="green">c++11</span>
3913                </p>
3914              </td>
3915<td>
3916                <p>
3917                  <span class="green">c++11</span>
3918                </p>
3919              </td>
3920<td>
3921                <p>
3922                  <span class="green">c++11</span>
3923                </p>
3924              </td>
3925<td>
3926                <p>
3927                  <span class="green">c++11</span>
3928                </p>
3929              </td>
3930</tr>
3931<tr>
3932<td>
3933                <p>
3934                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_function_type" title="function_type"><code class="literal">function_type</code></a>
3935                </p>
3936              </td>
3937<td>
3938                <p>
3939                  <span class="green">c++11</span>
3940                </p>
3941              </td>
3942<td>
3943                <p>
3944                  <span class="green">c++11</span>
3945                </p>
3946              </td>
3947<td>
3948                <p>
3949                  <span class="green">c++11</span>
3950                </p>
3951              </td>
3952<td>
3953                <p>
3954                  <span class="green">c++11</span>
3955                </p>
3956              </td>
3957<td>
3958                <p>
3959                  <span class="green">c++11</span>
3960                </p>
3961              </td>
3962</tr>
3963<tr>
3964<td>
3965                <p>
3966                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_member_qualifiers" title="has_member_qualifiers"><code class="literal">has_member_qualifiers</code></a>
3967                </p>
3968              </td>
3969<td>
3970                <p>
3971                  <span class="green">c++11</span>
3972                </p>
3973              </td>
3974<td>
3975                <p>
3976                  <span class="green">c++11</span>
3977                </p>
3978              </td>
3979<td>
3980                <p>
3981                  <span class="green">c++11</span>
3982                </p>
3983              </td>
3984<td>
3985                <p>
3986                  <span class="green">c++11</span>
3987                </p>
3988              </td>
3989<td>
3990                <p>
3991                  <span class="green">c++11</span>
3992                </p>
3993              </td>
3994</tr>
3995<tr>
3996<td>
3997                <p>
3998                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_varargs" title="has_varargs"><code class="literal">has_varargs</code></a>
3999                </p>
4000              </td>
4001<td>
4002                <p>
4003                  <span class="green">c++11</span>
4004                </p>
4005              </td>
4006<td>
4007                <p>
4008                  <span class="green">c++11</span>
4009                </p>
4010              </td>
4011<td>
4012                <p>
4013                  <span class="green">c++11</span>
4014                </p>
4015              </td>
4016<td>
4017                <p>
4018                  <span class="green">c++11</span>
4019                </p>
4020              </td>
4021<td>
4022                <p>
4023                  <span class="green">c++11</span>
4024                </p>
4025              </td>
4026</tr>
4027<tr>
4028<td>
4029                <p>
4030                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_void_return" title="has_void_return"><code class="literal">has_void_return</code></a>
4031                </p>
4032              </td>
4033<td>
4034                <p>
4035                  <span class="green">c++11</span>
4036                </p>
4037              </td>
4038<td>
4039                <p>
4040                  <span class="green">c++11</span>
4041                </p>
4042              </td>
4043<td>
4044                <p>
4045                  <span class="green">c++11</span>
4046                </p>
4047              </td>
4048<td>
4049                <p>
4050                  <span class="green">c++11</span>
4051                </p>
4052              </td>
4053<td>
4054                <p>
4055                  <span class="green">c++11</span>
4056                </p>
4057              </td>
4058</tr>
4059<tr>
4060<td>
4061                <p>
4062                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_const_member" title="is_const_member"><code class="literal">is_const_member</code></a>
4063                </p>
4064              </td>
4065<td>
4066                <p>
4067                  <span class="green">c++11</span>
4068                </p>
4069              </td>
4070<td>
4071                <p>
4072                  <span class="green">c++11</span>
4073                </p>
4074              </td>
4075<td>
4076                <p>
4077                  <span class="green">c++11</span>
4078                </p>
4079              </td>
4080<td>
4081                <p>
4082                  <span class="green">c++11</span>
4083                </p>
4084              </td>
4085<td>
4086                <p>
4087                  <span class="green">c++11</span>
4088                </p>
4089              </td>
4090</tr>
4091<tr>
4092<td>
4093                <p>
4094                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_cv_member" title="is_cv_member"><code class="literal">is_cv_member</code></a>
4095                </p>
4096              </td>
4097<td>
4098                <p>
4099                  <span class="green">c++11</span>
4100                </p>
4101              </td>
4102<td>
4103                <p>
4104                  <span class="green">c++11</span>
4105                </p>
4106              </td>
4107<td>
4108                <p>
4109                  <span class="green">c++11</span>
4110                </p>
4111              </td>
4112<td>
4113                <p>
4114                  <span class="green">c++11</span>
4115                </p>
4116              </td>
4117<td>
4118                <p>
4119                  <span class="green">c++11</span>
4120                </p>
4121              </td>
4122</tr>
4123<tr>
4124<td>
4125                <p>
4126                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_invocable" title="is_invocable"><code class="literal">is_invocable</code></a>
4127                </p>
4128              </td>
4129<td>
4130                <p>
4131                  <span class="green">c++11</span>
4132                </p>
4133              </td>
4134<td>
4135                <p>
4136                  <span class="green">c++11</span>
4137                </p>
4138              </td>
4139<td>
4140                <p>
4141                  <span class="green">c++11</span>
4142                </p>
4143              </td>
4144<td>
4145                <p>
4146                  <span class="green">c++11</span>
4147                </p>
4148              </td>
4149<td>
4150                <p>
4151                  <span class="green">c++11</span>
4152                </p>
4153              </td>
4154</tr>
4155<tr>
4156<td>
4157                <p>
4158                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_lvalue_reference_member" title="is_lvalue_reference_member"><code class="literal">is_lvalue_reference_member</code></a>
4159                </p>
4160              </td>
4161<td>
4162                <p>
4163                  <span class="green">c++11</span>
4164                </p>
4165              </td>
4166<td>
4167                <p>
4168                  <span class="green">c++11</span>
4169                </p>
4170              </td>
4171<td>
4172                <p>
4173                  <span class="green">c++11</span>
4174                </p>
4175              </td>
4176<td>
4177                <p>
4178                  <span class="green">c++11</span>
4179                </p>
4180              </td>
4181<td>
4182                <p>
4183                  <span class="green">c++11</span>
4184                </p>
4185              </td>
4186</tr>
4187<tr>
4188<td>
4189                <p>
4190                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_noexcept" title="is_noexcept"><code class="literal">is_noexcept</code></a>
4191                </p>
4192              </td>
4193<td>
4194                <p>
4195                  unknown
4196                </p>
4197              </td>
4198<td>
4199                <p>
4200                  <span class="gold">c++11</span> (always false)
4201                </p>
4202              </td>
4203<td>
4204                <p>
4205                  <span class="gold">c++11</span> (always false)
4206                </p>
4207              </td>
4208<td>
4209                <p>
4210                  <span class="gold">c++11</span> (always false)
4211                </p>
4212              </td>
4213<td>
4214                <p>
4215                  <span class="gold">c++11</span> (always false)
4216                </p>
4217              </td>
4218</tr>
4219<tr>
4220<td>
4221                <p>
4222                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_reference_member" title="is_reference_member"><code class="literal">is_reference_member</code></a>
4223                </p>
4224              </td>
4225<td>
4226                <p>
4227                  <span class="green">c++11</span>
4228                </p>
4229              </td>
4230<td>
4231                <p>
4232                  <span class="green">c++11</span>
4233                </p>
4234              </td>
4235<td>
4236                <p>
4237                  <span class="green">c++11</span>
4238                </p>
4239              </td>
4240<td>
4241                <p>
4242                  <span class="green">c++11</span>
4243                </p>
4244              </td>
4245<td>
4246                <p>
4247                  <span class="green">c++11</span>
4248                </p>
4249              </td>
4250</tr>
4251<tr>
4252<td>
4253                <p>
4254                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_rvalue_reference_member" title="is_rvalue_reference_member"><code class="literal">is_rvalue_reference_member</code></a>
4255                </p>
4256              </td>
4257<td>
4258                <p>
4259                  <span class="green">c++11</span>
4260                </p>
4261              </td>
4262<td>
4263                <p>
4264                  <span class="green">c++11</span>
4265                </p>
4266              </td>
4267<td>
4268                <p>
4269                  <span class="green">c++11</span>
4270                </p>
4271              </td>
4272<td>
4273                <p>
4274                  <span class="green">c++11</span>
4275                </p>
4276              </td>
4277<td>
4278                <p>
4279                  <span class="green">c++11</span>
4280                </p>
4281              </td>
4282</tr>
4283<tr>
4284<td>
4285                <p>
4286                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_transaction_safe" title="is_transaction_safe"><code class="literal">is_transaction_safe</code></a>
4287                </p>
4288              </td>
4289<td>
4290                <p>
4291                  unknown
4292                </p>
4293              </td>
4294<td>
4295                <p>
4296                  <span class="gold">c++11</span> (always false)
4297                </p>
4298              </td>
4299<td>
4300                <p>
4301                  <span class="gold">c++11</span> (always false)
4302                </p>
4303              </td>
4304<td>
4305                <p>
4306                  <span class="gold">c++11</span> (always false)
4307                </p>
4308              </td>
4309<td>
4310                <p>
4311                  <span class="gold">c++11</span> (always false)
4312                </p>
4313              </td>
4314</tr>
4315<tr>
4316<td>
4317                <p>
4318                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_volatile_member" title="is_volatile_member"><code class="literal">is_volatile_member</code></a>
4319                </p>
4320              </td>
4321<td>
4322                <p>
4323                  <span class="green">c++11</span>
4324                </p>
4325              </td>
4326<td>
4327                <p>
4328                  <span class="green">c++11</span>
4329                </p>
4330              </td>
4331<td>
4332                <p>
4333                  <span class="green">c++11</span>
4334                </p>
4335              </td>
4336<td>
4337                <p>
4338                  <span class="green">c++11</span>
4339                </p>
4340              </td>
4341<td>
4342                <p>
4343                  <span class="green">c++11</span>
4344                </p>
4345              </td>
4346</tr>
4347<tr>
4348<td>
4349                <p>
4350                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_qualified_class_of" title="qualified_class_of"><code class="literal">qualified_class_of</code></a>
4351                </p>
4352              </td>
4353<td>
4354                <p>
4355                  <span class="green">c++11</span>
4356                </p>
4357              </td>
4358<td>
4359                <p>
4360                  <span class="green">c++11</span>
4361                </p>
4362              </td>
4363<td>
4364                <p>
4365                  <span class="green">c++11</span>
4366                </p>
4367              </td>
4368<td>
4369                <p>
4370                  <span class="green">c++11</span>
4371                </p>
4372              </td>
4373<td>
4374                <p>
4375                  <span class="green">c++11</span>
4376                </p>
4377              </td>
4378</tr>
4379<tr>
4380<td>
4381                <p>
4382                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_const" title="remove_member_const"><code class="literal">remove_member_const</code></a>
4383                </p>
4384              </td>
4385<td>
4386                <p>
4387                  <span class="green">c++11</span>
4388                </p>
4389              </td>
4390<td>
4391                <p>
4392                  <span class="green">c++11</span>
4393                </p>
4394              </td>
4395<td>
4396                <p>
4397                  <span class="green">c++11</span>
4398                </p>
4399              </td>
4400<td>
4401                <p>
4402                  <span class="green">c++11</span>
4403                </p>
4404              </td>
4405<td>
4406                <p>
4407                  <span class="green">c++11</span>
4408                </p>
4409              </td>
4410</tr>
4411<tr>
4412<td>
4413                <p>
4414                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_cv" title="remove_member_cv"><code class="literal">remove_member_cv</code></a>
4415                </p>
4416              </td>
4417<td>
4418                <p>
4419                  <span class="green">c++11</span>
4420                </p>
4421              </td>
4422<td>
4423                <p>
4424                  <span class="green">c++11</span>
4425                </p>
4426              </td>
4427<td>
4428                <p>
4429                  <span class="green">c++11</span>
4430                </p>
4431              </td>
4432<td>
4433                <p>
4434                  <span class="green">c++11</span>
4435                </p>
4436              </td>
4437<td>
4438                <p>
4439                  <span class="green">c++11</span>
4440                </p>
4441              </td>
4442</tr>
4443<tr>
4444<td>
4445                <p>
4446                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_reference" title="remove_member_reference"><code class="literal">remove_member_reference</code></a>
4447                </p>
4448              </td>
4449<td>
4450                <p>
4451                  <span class="green">c++11</span>
4452                </p>
4453              </td>
4454<td>
4455                <p>
4456                  <span class="green">c++11</span>
4457                </p>
4458              </td>
4459<td>
4460                <p>
4461                  <span class="green">c++11</span>
4462                </p>
4463              </td>
4464<td>
4465                <p>
4466                  <span class="green">c++11</span>
4467                </p>
4468              </td>
4469<td>
4470                <p>
4471                  <span class="green">c++11</span>
4472                </p>
4473              </td>
4474</tr>
4475<tr>
4476<td>
4477                <p>
4478                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_volatile" title="remove_member_volatile"><code class="literal">remove_member_volatile</code></a>
4479                </p>
4480              </td>
4481<td>
4482                <p>
4483                  <span class="green">c++11</span>
4484                </p>
4485              </td>
4486<td>
4487                <p>
4488                  <span class="green">c++11</span>
4489                </p>
4490              </td>
4491<td>
4492                <p>
4493                  <span class="green">c++11</span>
4494                </p>
4495              </td>
4496<td>
4497                <p>
4498                  <span class="green">c++11</span>
4499                </p>
4500              </td>
4501<td>
4502                <p>
4503                  <span class="green">c++11</span>
4504                </p>
4505              </td>
4506</tr>
4507<tr>
4508<td>
4509                <p>
4510                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_noexcept" title="remove_noexcept"><code class="literal">remove_noexcept</code></a>
4511                </p>
4512              </td>
4513<td>
4514                <p>
4515                  unknown
4516                </p>
4517              </td>
4518<td>
4519                <p>
4520                  <span class="gold">c++11</span> (no effect)
4521                </p>
4522              </td>
4523<td>
4524                <p>
4525                  <span class="gold">c++11</span> (no effect)
4526                </p>
4527              </td>
4528<td>
4529                <p>
4530                  <span class="gold">c++11</span> (no effect)
4531                </p>
4532              </td>
4533<td>
4534                <p>
4535                  <span class="gold">c++11</span> (no effect)
4536                </p>
4537              </td>
4538</tr>
4539<tr>
4540<td>
4541                <p>
4542                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_transaction_safe" title="remove_transaction_safe"><code class="literal">remove_transaction_safe</code></a>
4543                </p>
4544              </td>
4545<td>
4546                <p>
4547                  unknown
4548                </p>
4549              </td>
4550<td>
4551                <p>
4552                  <span class="gold">c++11</span> (no effect)
4553                </p>
4554              </td>
4555<td>
4556                <p>
4557                  <span class="gold">c++11</span> (no effect)
4558                </p>
4559              </td>
4560<td>
4561                <p>
4562                  <span class="gold">c++11</span> (no effect)
4563                </p>
4564              </td>
4565<td>
4566                <p>
4567                  <span class="gold">c++11</span> (no effect)
4568                </p>
4569              </td>
4570</tr>
4571<tr>
4572<td>
4573                <p>
4574                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_varargs" title="remove_varargs"><code class="literal">remove_varargs</code></a>
4575                </p>
4576              </td>
4577<td>
4578                <p>
4579                  <span class="green">c++11</span>
4580                </p>
4581              </td>
4582<td>
4583                <p>
4584                  <span class="green">c++11</span>
4585                </p>
4586              </td>
4587<td>
4588                <p>
4589                  <span class="green">c++11</span>
4590                </p>
4591              </td>
4592<td>
4593                <p>
4594                  <span class="green">c++11</span>
4595                </p>
4596              </td>
4597<td>
4598                <p>
4599                  <span class="green">c++11</span>
4600                </p>
4601              </td>
4602</tr>
4603<tr>
4604<td>
4605                <p>
4606                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_return_type" title="return_type"><code class="literal">return_type</code></a>
4607                </p>
4608              </td>
4609<td>
4610                <p>
4611                  <span class="green">c++11</span>
4612                </p>
4613              </td>
4614<td>
4615                <p>
4616                  <span class="green">c++11</span>
4617                </p>
4618              </td>
4619<td>
4620                <p>
4621                  <span class="green">c++11</span>
4622                </p>
4623              </td>
4624<td>
4625                <p>
4626                  <span class="green">c++11</span>
4627                </p>
4628              </td>
4629<td>
4630                <p>
4631                  <span class="green">c++11</span>
4632                </p>
4633              </td>
4634</tr>
4635</tbody>
4636</table></div>
4637</div>
4638<br class="table-break"><div class="table">
4639<a name="callable_traits.introduction.compatibility.visual_studio_support"></a><p class="title"><b>Table 4. Visual Studio Support</b></p>
4640<div class="table-contents"><table class="table" summary="Visual Studio Support">
4641<colgroup>
4642<col>
4643<col>
4644<col>
4645</colgroup>
4646<thead><tr>
4647<th>
4648                <p>
4649                  feature
4650                </p>
4651              </th>
4652<th>
4653                <p>
4654                  MSVC with Visual Studio 2017
4655                </p>
4656              </th>
4657<th>
4658                <p>
4659                  MSVC with Visual Studio 2015 (latest update)
4660                </p>
4661              </th>
4662</tr></thead>
4663<tbody>
4664<tr>
4665<td>
4666                <p>
4667                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_const" title="add_member_const"><code class="literal">add_member_const</code></a>
4668                </p>
4669              </td>
4670<td>
4671                <p>
4672                  <span class="green">c++11</span>
4673                </p>
4674              </td>
4675<td>
4676                <p>
4677                  <span class="green">c++11</span>
4678                </p>
4679              </td>
4680</tr>
4681<tr>
4682<td>
4683                <p>
4684                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_cv" title="add_member_cv"><code class="literal">add_member_cv</code></a>
4685                </p>
4686              </td>
4687<td>
4688                <p>
4689                  <span class="green">c++11</span>
4690                </p>
4691              </td>
4692<td>
4693                <p>
4694                  <span class="green">c++11</span>
4695                </p>
4696              </td>
4697</tr>
4698<tr>
4699<td>
4700                <p>
4701                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_lvalue_reference" title="add_member_lvalue_reference"><code class="literal">add_member_lvalue_reference</code></a>
4702                </p>
4703              </td>
4704<td>
4705                <p>
4706                  <span class="green">c++11</span>
4707                </p>
4708              </td>
4709<td>
4710                <p>
4711                  <span class="green">c++11</span>
4712                </p>
4713              </td>
4714</tr>
4715<tr>
4716<td>
4717                <p>
4718                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_rvalue_reference" title="add_member_rvalue_reference"><code class="literal">add_member_rvalue_reference</code></a>
4719                </p>
4720              </td>
4721<td>
4722                <p>
4723                  <span class="green">c++11</span>
4724                </p>
4725              </td>
4726<td>
4727                <p>
4728                  <span class="green">c++11</span>
4729                </p>
4730              </td>
4731</tr>
4732<tr>
4733<td>
4734                <p>
4735                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_member_volatile" title="add_member_volatile"><code class="literal">add_member_volatile</code></a>
4736                </p>
4737              </td>
4738<td>
4739                <p>
4740                  <span class="green">c++11</span>
4741                </p>
4742              </td>
4743<td>
4744                <p>
4745                  <span class="green">c++11</span>
4746                </p>
4747              </td>
4748</tr>
4749<tr>
4750<td>
4751                <p>
4752                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_noexcept" title="add_noexcept"><code class="literal">add_noexcept</code></a>
4753                </p>
4754              </td>
4755<td>
4756                <p>
4757                  <span class="red">static_assert fails on instantiation</span>
4758                </p>
4759              </td>
4760<td>
4761                <p>
4762                  <span class="red">static_assert fails on instantiation</span>
4763                </p>
4764              </td>
4765</tr>
4766<tr>
4767<td>
4768                <p>
4769                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_transaction_safe" title="add_transaction_safe"><code class="literal">add_transaction_safe</code></a>
4770                </p>
4771              </td>
4772<td>
4773                <p>
4774                  <span class="red">static_assert fails on instantiation</span>
4775                </p>
4776              </td>
4777<td>
4778                <p>
4779                  <span class="red">static_assert fails on instantiation</span>
4780                </p>
4781              </td>
4782</tr>
4783<tr>
4784<td>
4785                <p>
4786                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_add_varargs" title="add_varargs"><code class="literal">add_varargs</code></a>
4787                </p>
4788              </td>
4789<td>
4790                <p>
4791                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
4792                  to disable __cdecl on PMF varargs)
4793                </p>
4794              </td>
4795<td>
4796                <p>
4797                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
4798                  to disable __cdecl on PMF varargs)
4799                </p>
4800              </td>
4801</tr>
4802<tr>
4803<td>
4804                <p>
4805                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_member_pointer" title="apply_member_pointer"><code class="literal">apply_member_pointer</code></a>
4806                </p>
4807              </td>
4808<td>
4809                <p>
4810                  <span class="green">c++11</span>
4811                </p>
4812              </td>
4813<td>
4814                <p>
4815                  <span class="green">c++11</span>
4816                </p>
4817              </td>
4818</tr>
4819<tr>
4820<td>
4821                <p>
4822                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_apply_return" title="apply_return"><code class="literal">apply_return</code></a>
4823                </p>
4824              </td>
4825<td>
4826                <p>
4827                  <span class="green">c++11</span>
4828                </p>
4829              </td>
4830<td>
4831                <p>
4832                  <span class="green">c++11</span>
4833                </p>
4834              </td>
4835</tr>
4836<tr>
4837<td>
4838                <p>
4839                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_args" title="args"><code class="literal">args</code></a>
4840                </p>
4841              </td>
4842<td>
4843                <p>
4844                  <span class="green">c++11</span>
4845                </p>
4846              </td>
4847<td>
4848                <p>
4849                  <span class="green">c++11</span>
4850                </p>
4851              </td>
4852</tr>
4853<tr>
4854<td>
4855                <p>
4856                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_class_of" title="class_of"><code class="literal">class_of</code></a>
4857                </p>
4858              </td>
4859<td>
4860                <p>
4861                  <span class="green">c++11</span>
4862                </p>
4863              </td>
4864<td>
4865                <p>
4866                  <span class="green">c++11</span>
4867                </p>
4868              </td>
4869</tr>
4870<tr>
4871<td>
4872                <p>
4873                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_function_type" title="function_type"><code class="literal">function_type</code></a>
4874                </p>
4875              </td>
4876<td>
4877                <p>
4878                  <span class="green">c++11</span>
4879                </p>
4880              </td>
4881<td>
4882                <p>
4883                  <span class="green">c++11</span>
4884                </p>
4885              </td>
4886</tr>
4887<tr>
4888<td>
4889                <p>
4890                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_member_qualifiers" title="has_member_qualifiers"><code class="literal">has_member_qualifiers</code></a>
4891                </p>
4892              </td>
4893<td>
4894                <p>
4895                  <span class="green">c++11</span>
4896                </p>
4897              </td>
4898<td>
4899                <p>
4900                  <span class="green">c++11</span>
4901                </p>
4902              </td>
4903</tr>
4904<tr>
4905<td>
4906                <p>
4907                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_varargs" title="has_varargs"><code class="literal">has_varargs</code></a>
4908                </p>
4909              </td>
4910<td>
4911                <p>
4912                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
4913                  to disable __cdecl on PMF varargs)
4914                </p>
4915              </td>
4916<td>
4917                <p>
4918                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
4919                  to disable __cdecl on PMF varargs)
4920                </p>
4921              </td>
4922</tr>
4923<tr>
4924<td>
4925                <p>
4926                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_has_void_return" title="has_void_return"><code class="literal">has_void_return</code></a>
4927                </p>
4928              </td>
4929<td>
4930                <p>
4931                  <span class="green">c++11</span>
4932                </p>
4933              </td>
4934<td>
4935                <p>
4936                  <span class="green">c++11</span>
4937                </p>
4938              </td>
4939</tr>
4940<tr>
4941<td>
4942                <p>
4943                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_const_member" title="is_const_member"><code class="literal">is_const_member</code></a>
4944                </p>
4945              </td>
4946<td>
4947                <p>
4948                  <span class="green">c++11</span>
4949                </p>
4950              </td>
4951<td>
4952                <p>
4953                  <span class="green">c++11</span>
4954                </p>
4955              </td>
4956</tr>
4957<tr>
4958<td>
4959                <p>
4960                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_cv_member" title="is_cv_member"><code class="literal">is_cv_member</code></a>
4961                </p>
4962              </td>
4963<td>
4964                <p>
4965                  <span class="green">c++11</span>
4966                </p>
4967              </td>
4968<td>
4969                <p>
4970                  <span class="green">c++11</span>
4971                </p>
4972              </td>
4973</tr>
4974<tr>
4975<td>
4976                <p>
4977                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_invocable" title="is_invocable"><code class="literal">is_invocable</code></a>
4978                </p>
4979              </td>
4980<td>
4981                <p>
4982                  <span class="green">c++11</span>
4983                </p>
4984              </td>
4985<td>
4986                <p>
4987                  <span class="gold">c++11</span> (always false for functions
4988                  that are simultaneously ref and cv-qualified due to compiler bug)
4989                </p>
4990              </td>
4991</tr>
4992<tr>
4993<td>
4994                <p>
4995                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_lvalue_reference_member" title="is_lvalue_reference_member"><code class="literal">is_lvalue_reference_member</code></a>
4996                </p>
4997              </td>
4998<td>
4999                <p>
5000                  <span class="green">c++11</span>
5001                </p>
5002              </td>
5003<td>
5004                <p>
5005                  <span class="green">c++11</span>
5006                </p>
5007              </td>
5008</tr>
5009<tr>
5010<td>
5011                <p>
5012                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_noexcept" title="is_noexcept"><code class="literal">is_noexcept</code></a>
5013                </p>
5014              </td>
5015<td>
5016                <p>
5017                  <span class="gold">c++11</span> (always false)
5018                </p>
5019              </td>
5020<td>
5021                <p>
5022                  <span class="gold">c++11</span> (always false)
5023                </p>
5024              </td>
5025</tr>
5026<tr>
5027<td>
5028                <p>
5029                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_reference_member" title="is_reference_member"><code class="literal">is_reference_member</code></a>
5030                </p>
5031              </td>
5032<td>
5033                <p>
5034                  <span class="green">c++11</span>
5035                </p>
5036              </td>
5037<td>
5038                <p>
5039                  <span class="green">c++11</span>
5040                </p>
5041              </td>
5042</tr>
5043<tr>
5044<td>
5045                <p>
5046                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_rvalue_reference_member" title="is_rvalue_reference_member"><code class="literal">is_rvalue_reference_member</code></a>
5047                </p>
5048              </td>
5049<td>
5050                <p>
5051                  <span class="green">c++11</span>
5052                </p>
5053              </td>
5054<td>
5055                <p>
5056                  <span class="green">c++11</span>
5057                </p>
5058              </td>
5059</tr>
5060<tr>
5061<td>
5062                <p>
5063                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_transaction_safe" title="is_transaction_safe"><code class="literal">is_transaction_safe</code></a>
5064                </p>
5065              </td>
5066<td>
5067                <p>
5068                  <span class="gold">c++11</span> (always false)
5069                </p>
5070              </td>
5071<td>
5072                <p>
5073                  <span class="gold">c++11</span> (always false)
5074                </p>
5075              </td>
5076</tr>
5077<tr>
5078<td>
5079                <p>
5080                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_is_volatile_member" title="is_volatile_member"><code class="literal">is_volatile_member</code></a>
5081                </p>
5082              </td>
5083<td>
5084                <p>
5085                  <span class="green">c++11</span>
5086                </p>
5087              </td>
5088<td>
5089                <p>
5090                  <span class="green">c++11</span>
5091                </p>
5092              </td>
5093</tr>
5094<tr>
5095<td>
5096                <p>
5097                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_qualified_class_of" title="qualified_class_of"><code class="literal">qualified_class_of</code></a>
5098                </p>
5099              </td>
5100<td>
5101                <p>
5102                  <span class="green">c++11</span>
5103                </p>
5104              </td>
5105<td>
5106                <p>
5107                  <span class="green">c++11</span>
5108                </p>
5109              </td>
5110</tr>
5111<tr>
5112<td>
5113                <p>
5114                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_const" title="remove_member_const"><code class="literal">remove_member_const</code></a>
5115                </p>
5116              </td>
5117<td>
5118                <p>
5119                  <span class="green">c++11</span>
5120                </p>
5121              </td>
5122<td>
5123                <p>
5124                  <span class="green">c++11</span>
5125                </p>
5126              </td>
5127</tr>
5128<tr>
5129<td>
5130                <p>
5131                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_cv" title="remove_member_cv"><code class="literal">remove_member_cv</code></a>
5132                </p>
5133              </td>
5134<td>
5135                <p>
5136                  <span class="green">c++11</span>
5137                </p>
5138              </td>
5139<td>
5140                <p>
5141                  <span class="green">c++11</span>
5142                </p>
5143              </td>
5144</tr>
5145<tr>
5146<td>
5147                <p>
5148                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_reference" title="remove_member_reference"><code class="literal">remove_member_reference</code></a>
5149                </p>
5150              </td>
5151<td>
5152                <p>
5153                  <span class="green">c++11</span>
5154                </p>
5155              </td>
5156<td>
5157                <p>
5158                  <span class="green">c++11</span>
5159                </p>
5160              </td>
5161</tr>
5162<tr>
5163<td>
5164                <p>
5165                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_member_volatile" title="remove_member_volatile"><code class="literal">remove_member_volatile</code></a>
5166                </p>
5167              </td>
5168<td>
5169                <p>
5170                  <span class="green">c++11</span>
5171                </p>
5172              </td>
5173<td>
5174                <p>
5175                  <span class="green">c++11</span>
5176                </p>
5177              </td>
5178</tr>
5179<tr>
5180<td>
5181                <p>
5182                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_noexcept" title="remove_noexcept"><code class="literal">remove_noexcept</code></a>
5183                </p>
5184              </td>
5185<td>
5186                <p>
5187                  <span class="gold">c++11</span> (no effect)
5188                </p>
5189              </td>
5190<td>
5191                <p>
5192                  <span class="gold">c++11</span> (no effect)
5193                </p>
5194              </td>
5195</tr>
5196<tr>
5197<td>
5198                <p>
5199                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_transaction_safe" title="remove_transaction_safe"><code class="literal">remove_transaction_safe</code></a>
5200                </p>
5201              </td>
5202<td>
5203                <p>
5204                  <span class="gold">c++11</span> (no effect)
5205                </p>
5206              </td>
5207<td>
5208                <p>
5209                  <span class="gold">c++11</span> (no effect)
5210                </p>
5211              </td>
5212</tr>
5213<tr>
5214<td>
5215                <p>
5216                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_remove_varargs" title="remove_varargs"><code class="literal">remove_varargs</code></a>
5217                </p>
5218              </td>
5219<td>
5220                <p>
5221                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
5222                  to disable __cdecl on PMF varargs)
5223                </p>
5224              </td>
5225<td>
5226                <p>
5227                  <span class="green">c++11</span> (define BOOST_DISABLE_WIN32
5228                  to disable __cdecl on PMF varargs)
5229                </p>
5230              </td>
5231</tr>
5232<tr>
5233<td>
5234                <p>
5235                  <a class="link" href="callable_traits/reference.html#callable_traits.reference.ref_return_type" title="return_type"><code class="literal">return_type</code></a>
5236                </p>
5237              </td>
5238<td>
5239                <p>
5240                  <span class="green">c++11</span>
5241                </p>
5242              </td>
5243<td>
5244                <p>
5245                  <span class="green">c++11</span>
5246                </p>
5247              </td>
5248</tr>
5249</tbody>
5250</table></div>
5251</div>
5252<br class="table-break">
5253</div>
5254</div>
5255</div>
5256<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
5257<td align="left"></td>
5258<td align="right"><div class="copyright-footer"></div></td>
5259</tr></table>
5260<hr>
5261<div class="spirit-nav"><a accesskey="n" href="callable_traits/reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
5262</body>
5263</html>
5264