]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN"> |
2 | ||
3 | <html> | |
4 | <head> | |
5 | <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> | |
6 | <title>Boost.MultiIndex Documentation - Release notes</title> | |
7 | <link rel="stylesheet" href="style.css" type="text/css"> | |
8 | <link rel="start" href="index.html"> | |
9 | <link rel="prev" href="future_work.html"> | |
10 | <link rel="up" href="index.html"> | |
11 | <link rel="next" href="acknowledgements.html"> | |
12 | </head> | |
13 | ||
14 | <body> | |
15 | <h1><img src="../../../boost.png" alt="boost.png (6897 bytes)" align= | |
16 | "middle" width="277" height="86">Boost.MultiIndex Release notes</h1> | |
17 | ||
18 | <div class="prev_link"><a href="future_work.html"><img src="prev.gif" alt="future work" border="0"><br> | |
19 | Future work | |
20 | </a></div> | |
21 | <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br> | |
22 | Index | |
23 | </a></div> | |
24 | <div class="next_link"><a href="acknowledgements.html"><img src="next.gif" alt="acknowledgements" border="0"><br> | |
25 | Acknowledgements | |
26 | </a></div><br clear="all" style="clear: all;"> | |
27 | ||
28 | <hr> | |
29 | ||
30 | <h2>Contents</h2> | |
31 | ||
32 | <ul> | |
33 | <li><a href="#boost_1_60">Boost 1.60 release</a></li> | |
34 | <li><a href="#boost_1_59">Boost 1.59 release</a></li> | |
35 | <li><a href="#boost_1_58">Boost 1.58 release</a></li> | |
36 | <li><a href="#boost_1_57">Boost 1.57 release</a></li> | |
37 | <li><a href="#boost_1_56">Boost 1.56 release</a></li> | |
38 | <li><a href="#boost_1_55">Boost 1.55 release</a></li> | |
39 | <li><a href="#boost_1_54">Boost 1.54 release</a></li> | |
40 | <li><a href="#boost_1_49">Boost 1.49 release</a></li> | |
41 | <li><a href="#boost_1_48">Boost 1.48 release</a></li> | |
42 | <li><a href="#boost_1_47">Boost 1.47 release</a></li> | |
43 | <li><a href="#boost_1_44">Boost 1.44 release</a></li> | |
44 | <li><a href="#boost_1_43">Boost 1.43 release</a></li> | |
45 | <li><a href="#boost_1_42">Boost 1.42 release</a></li> | |
46 | <li><a href="#boost_1_41">Boost 1.41 release</a></li> | |
47 | <li><a href="#boost_1_38">Boost 1.38 release</a></li> | |
48 | <li><a href="#boost_1_37">Boost 1.37 release</a></li> | |
49 | <li><a href="#boost_1_36">Boost 1.36 release</a></li> | |
50 | <li><a href="#boost_1_35">Boost 1.35 release</a></li> | |
51 | <li><a href="#boost_1_34">Boost 1.34 release</a></li> | |
52 | <li><a href="#boost_1_33_1">Boost 1.33.1 release</a></li> | |
53 | <li><a href="#boost_1_33">Boost 1.33 release</a></li> | |
54 | </ul> | |
55 | ||
56 | <h2><a name="boost_1_60">Boost 1.60 release</a></h2> | |
57 | ||
58 | <p> | |
59 | <ul> | |
60 | <li>Fixed an interoperability problem with <a href="http://www.qt.io/">Qt</a> due to the | |
61 | optional definition of a macro with name <code>foreach</code> in this framework.</li> | |
62 | <li>Maintenance fixes.</li> | |
63 | </ul> | |
64 | </p> | |
65 | ||
66 | <h2><a name="boost_1_59">Boost 1.59 release</a></h2> | |
67 | ||
68 | <p> | |
69 | <ul> | |
70 | <li>Added <a href="tutorial/indices.html#rnk_indices">ranked indices</a>.</li> | |
71 | <li>Maintenance fixes.</li> | |
72 | </ul> | |
73 | </p> | |
74 | ||
75 | <h2><a name="boost_1_58">Boost 1.58 release</a></h2> | |
76 | ||
77 | <p> | |
78 | <ul> | |
79 | <li>The efficiency of lookup operations has improved in situations where they involve | |
80 | the generation of temporary values of <code>key_type</code>. Consider for instance | |
81 | the following code: | |
82 | <blockquote><pre> | |
83 | <span class=keyword>typedef</span> <span class=identifier>multi_index_container</span><span class=special><</span> | |
84 | <span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>,</span> | |
85 | <span class=identifier>indexed_by</span><span class=special><</span> | |
86 | <span class=identifier>ordered_unique</span><span class=special><</span><span class=identifier>identity</span><span class=special><</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>></span> <span class=special>></span> | |
87 | <span class=special>></span> | |
88 | <span class=special>></span> <span class=identifier>multi_t</span><span class=special>;</span> | |
89 | <span class=special>...</span> | |
90 | <span class=identifier>multi_t</span> <span class=identifier>m</span><span class=special>=...;</span> | |
91 | <span class=identifier>m</span><span class=special>.</span><span class=identifier>find</span><span class=special>(</span><span class=string>"boost"</span><span class=special>);</span> <span class=comment>// passed a const char*, not a std::string</span> | |
92 | </pre></blockquote> | |
93 | In previous versions of the library, the <code>find</code> operation generates | |
94 | several temporary <code>std::string</code>s (one every time an internal comparison is made). | |
95 | In sufficiently advanced compilers, this is now avoided so that only one temporary is | |
96 | created. | |
97 | </li> | |
98 | <li>Maintenance fixes.</li> | |
99 | </ul> | |
100 | </p> | |
101 | ||
102 | <h2><a name="boost_1_57">Boost 1.57 release</a></h2> | |
103 | ||
104 | <p> | |
105 | <ul> | |
106 | <li>When <code>std::tuple</code>s are available, these can be used for lookup operations | |
107 | in indices equipped with composite keys. <code>boost::tuple</code>s are also supported | |
108 | for backwards compatibility. | |
109 | </li> | |
110 | </ul> | |
111 | </p> | |
112 | ||
113 | <h2><a name="boost_1_56">Boost 1.56 release</a></h2> | |
114 | ||
115 | <p> | |
116 | <ul> | |
117 | <li>The <code>erase(iterator)</code> member function of hashed indices | |
118 | used to have poor performance under low load conditions due to the requirement | |
119 | that an iterator to the next element must be returned (see ticket | |
120 | <a href="https://svn.boost.org/trac/boost/ticket/4264">#4264</a>). In accordance with | |
121 | the resolution of <a href="http://lwg.github.io/issues/lwg-closed.html#579">LWG | |
122 | issue #579</a>, this problem has been fixed while maintaining the interface of | |
123 | <code>erase</code>, at the expense of using one more | |
124 | word of memory per element. In fact, C++ complexity requirements on unordered | |
125 | associative containers have been improved for hashed indices so that | |
126 | <ul> | |
127 | <li>deletion of a given element is unconditionally constant-time,</li> | |
128 | <li>worst-case performance is not <code>O(n)</code> but <code>O(n<sub>dist</sub>)</code>, | |
129 | where <code>n<sub>dist</sub></code> is the number of non-equivalent elements in the index. | |
130 | </li> | |
131 | </ul> | |
132 | Due to the fact that hashed indices rely on a new data structure, the internal representation of | |
133 | their iterators and local iterators have changed, which affects serialization: their corresponding | |
134 | serialization <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been | |
135 | bumped from 0 to 1. Old archives involving hashed index (local) iterators can be loaded | |
136 | by Boost 1.56 version of Boost.MultiIndex, but not the other way around. | |
137 | </li> | |
138 | <li>Hashed indices now provide <code>reserve</code>.</li> | |
139 | <li>Hashed indices can now be checked for equality and inequality following the | |
140 | (suitably adapted) C++ standard specification in <b>[unord.req]</b>.</li> | |
141 | <li>The public interface of Boost.MultiIndex provide <code>noexcept</code> specifications | |
142 | where appropriate (for compliant compilers). | |
143 | </li> | |
144 | <li>Improved performance of failed insertions into a <code>multi_index_container</code>.</li> | |
145 | <li>Much internal code aimed at supporting MSVC++ 7.0 and prior has been removed. | |
146 | Compilation times without this legacy code might be slightly faster. | |
147 | </li> | |
148 | <li>Fixed a bug with insertion via iterators dereferencing to rvalues | |
149 | (ticket <a href="https://svn.boost.org/trac/boost/ticket/9665">#9665</a>). | |
150 | </li> | |
151 | <li>Made Boost.MultiIndex compatible with <code>BOOST_BIND_NO_PLACEHOLDERS</code> | |
152 | (ticket <a href="https://svn.boost.org/trac/boost/ticket/9798">#9798</a>). | |
153 | </li> | |
154 | <li>Maintenance fixes.</li> | |
155 | </ul> | |
156 | </p> | |
157 | ||
158 | <h2><a name="boost_1_55">Boost 1.55 release</a></h2> | |
159 | ||
160 | <p> | |
161 | <ul> | |
162 | <li>Boost.MultiIndex has been brought to a higher level of compliance | |
163 | with C++11. | |
164 | <ul> | |
165 | <li><code>multi_index_container</code> is now efficiently movable.</li> | |
166 | <li>Initializer lists supported.</li> | |
167 | <li>Emplace functions provided.</li> | |
168 | <li>Non-copyable elements (such as <code>std::unique_ptr<T></code>) supported. This includes | |
169 | insertion of a range [<code>first</code>,<code>last</code>) where the iterators point to a type that is | |
170 | convertible to that of the element: no copy construction happens in the process. | |
171 | </li> | |
172 | <li>Random access indices provide <code>shrink_to_fit()</code>.</li> | |
173 | </ul> | |
174 | Refer to the <a href="compiler_specifics.html">compiler specifics</a> section for limitations | |
175 | on pre-C++11 compilers. | |
176 | </li> | |
177 | <li>The following classes are deprecated: | |
178 | <ul> | |
179 | <li><a href="reference/key_extraction.html#member_offset"><code>member_offset</code></a>,</li> | |
180 | <li><a href="reference/key_extraction.html#const_mem_fun_explicit"><code>const_mem_fun_explicit</code></a>,</li> | |
181 | <li><a href="reference/key_extraction.html#const_mem_fun_explicit"><code>mem_fun_explicit</code></a>,</li> | |
182 | <li><a href="reference/key_extraction.html#composite_key_result_equal_to"><code>composite_key_result_equal_to</code></a>,</li> | |
183 | <li><a href="reference/key_extraction.html#composite_key_result_less"><code>composite_key_result_less</code></a>,</li> | |
184 | <li><a href="reference/key_extraction.html#composite_key_result_greater"><code>composite_key_result_greater</code></a>,</li> | |
185 | <li><a href="reference/key_extraction.html#composite_key_result_hash"><code>composite_key_result_hash</code></a>.</li> | |
186 | </ul> | |
187 | </li> | |
188 | <li>Maintenance fixes.</li> | |
189 | </ul> | |
190 | </p> | |
191 | ||
192 | <h2><a name="boost_1_54">Boost 1.54 release</a></h2> | |
193 | ||
194 | <p> | |
195 | <ul> | |
196 | <li>Suppressed some potential warnings described in | |
197 | tickets <a href="https://svn.boost.org/trac/boost/ticket/8034">#8034</a> and <a href="https://svn.boost.org/trac/boost/ticket/8129">#8129</a>. | |
198 | </li> | |
199 | <li>Maintenance fixes.</li> | |
200 | </ul> | |
201 | </p> | |
202 | ||
203 | <h2><a name="boost_1_49">Boost 1.49 release</a></h2> | |
204 | ||
205 | <p> | |
206 | <ul> | |
207 | <li>Suppressed a potential narrow conversion warning described in | |
208 | ticket <a href="https://svn.boost.org/trac/boost/ticket/3365">#3365</a>. | |
209 | </li> | |
210 | </ul> | |
211 | </p> | |
212 | ||
213 | <h2><a name="boost_1_48">Boost 1.48 release</a></h2> | |
214 | ||
215 | <p> | |
216 | <ul> | |
217 | <li>Fixed a compatibility problem with | |
218 | <a href="../../../doc/html/foreach.html">Boost.Foreach</a> | |
219 | (ticket <a href="https://svn.boost.org/trac/boost/ticket/5741">#5741</a>). | |
220 | </li> | |
221 | </ul> | |
222 | </p> | |
223 | ||
224 | <h2><a name="boost_1_47">Boost 1.47 release</a></h2> | |
225 | ||
226 | <p> | |
227 | <ul> | |
228 | <li>Fixed an ADL problem in | |
229 | <a href="reference/key_extraction.html#composite_key_compare"><code>composite_key_compare</code></a> | |
230 | related with <a href="../../../doc/html/ref.html">Boost.Ref</a>. | |
231 | </li> | |
232 | <li>Maintenance fixes.</li> | |
233 | </ul> | |
234 | </p> | |
235 | ||
236 | <h2><a name="boost_1_44">Boost 1.44 release</a></h2> | |
237 | ||
238 | <p> | |
239 | <ul> | |
240 | <li> | |
241 | Fixed a bug preventing the use of <code>modify_key</code> with | |
242 | rollback in <a href="reference/ord_indices.html#modify_key">ordered</a> and | |
243 | <a href="reference/hash_indices.html#modify_key">hashed</a> indices when | |
244 | <code>Modifier</code> and <code>Rollback</code> are different types | |
245 | (ticket <a href="https://svn.boost.org/trac/boost/ticket/4130">#4130</a>). | |
246 | </li> | |
247 | </ul> | |
248 | </p> | |
249 | ||
250 | <h2><a name="boost_1_43">Boost 1.43 release</a></h2> | |
251 | ||
252 | <p> | |
253 | <ul> | |
254 | <li> | |
255 | <a href="../../serialization/doc/serialization.html#constructors">Serialization | |
256 | of non default constructible values</a> is now properly supported | |
257 | through user-provided facilities <code>save_construct_data</code> and | |
258 | <code>load_construct_data</code>. | |
259 | <code>multi_index_container</code> serialization | |
260 | <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been | |
261 | bumped from 1 to 2. | |
262 | </li> | |
263 | </ul> | |
264 | </p> | |
265 | ||
266 | <h2><a name="boost_1_42">Boost 1.42 release</a></h2> | |
267 | ||
268 | <p> | |
269 | <ul> | |
270 | <li>Maintenance fixes.</li> | |
271 | </ul> | |
272 | </p> | |
273 | ||
274 | <h2><a name="boost_1_41">Boost 1.41 release</a></h2> | |
275 | <p> | |
276 | <ul> | |
277 | <li>Serialization now uses the portable | |
278 | <a href="../../serialization/doc/wrappers.html#collection_size_type"><code>collection_size_type</code></a> | |
279 | type instead of the original <code>std::size_t</code> (ticket | |
280 | <a href="https://svn.boost.org/trac/boost/ticket/3365">#3365</a>). | |
281 | <code>multi_index_container</code> serialization | |
282 | <a href="../../serialization/doc/tutorial.html#versioning">class version</a> has been | |
283 | bumped from 0 to 1. | |
284 | </li> | |
285 | <li>Fixed a concurrency bug in the implementation of | |
286 | <a href="tutorial/debug.html#safe_mode">safe mode</a> | |
287 | (ticket <a href="https://svn.boost.org/trac/boost/ticket/3462">#3462</a>). | |
288 | </li> | |
289 | </ul> | |
290 | </p> | |
291 | ||
292 | <h2><a name="boost_1_38">Boost 1.38 release</a></h2> | |
293 | ||
294 | <p> | |
295 | <ul> | |
296 | <li>These constructs are deprecated: | |
297 | <ul> | |
298 | <li><code>nth_index_iterator<MultiIndexContainer,N>::type</code>,</li> | |
299 | <li><code>multi_index_container<...>::nth_index_iterator<N>::type</code>,</li> | |
300 | <li><code>nth_index_const_iterator<MultiIndexContainer,N>::type</code>,</li> | |
301 | <li><code>multi_index_container<...>::nth_index_const_iterator<N>::type</code>,</li> | |
302 | <li><code>index_iterator<MultiIndexContainer,Tag>::type</code>,</li> | |
303 | <li><code>multi_index_container<...>::index_iterator<Tag>::type</code>,</li> | |
304 | <li><code>index_const_iterator<MultiIndexContainer,Tag>::type</code>,</li> | |
305 | <li><code>multi_index_container<...>::index_const_iterator<Tag>::type</code>.</li> | |
306 | </ul> | |
307 | Use the following instead: | |
308 | <ul> | |
309 | <li><code>nth_index<MultiIndexContainer,N>::type::iterator</code>,</li> | |
310 | <li><code>multi_index_container<...>::nth_index<N>::type::iterator</code>,</li> | |
311 | <li><code>nth_index<MultiIndexContainer,N>::type::const_iterator</code>,</li> | |
312 | <li><code>multi_index_container<...>::nth_index<N>::type::const_iterator</code>,</li> | |
313 | <li><code>index<MultiIndexContainer,Tag>::type::iterator</code>,</li> | |
314 | <li><code>multi_index_container<...>::index<Tag>::type::iterator</code>,</li> | |
315 | <li><code>index<MultiIndexContainer,Tag>::type::const_iterator</code>,</li> | |
316 | <li><code>multi_index_container<...>::index<Tag>::type::const_iterator</code>.</li> | |
317 | </ul> | |
318 | </li> | |
319 | <li>Maintenance fixes.</li> | |
320 | </ul> | |
321 | </p> | |
322 | ||
323 | <h2><a name="boost_1_37">Boost 1.37 release</a></h2> | |
324 | ||
325 | <p> | |
326 | <ul> | |
327 | <li>Maintenance fixes.</li> | |
328 | </ul> | |
329 | </p> | |
330 | ||
331 | <h2><a name="boost_1_36">Boost 1.36 release</a></h2> | |
332 | ||
333 | <p> | |
334 | <ul> | |
335 | <li><a name="stable_update">On prior versions of the library, the <a href="tutorial/indices.html#hash_updating">update | |
336 | member functions</a> of hashed indices could alter the position of an element even if the | |
337 | associated key did not change with the update. This is legal but probably unexpected behavior. | |
338 | The functions have been rewritten to provide the additional guarantee that elements with | |
339 | unmodified key will not change position in hashed indices, just as always was the case with | |
340 | ordered indices. These guarantees are now documented in the reference.</a></li> | |
341 | <li>Added the constructor <code>multi_index_container::multi_index_container(const allocator_type&)</code> | |
342 | to mimic the equivalent interface in STL sequence containers. | |
343 | <li>Maintenance fixes.</li> | |
344 | </ul> | |
345 | </p> | |
346 | ||
347 | <h2><a name="boost_1_35">Boost 1.35 release</a></h2> | |
348 | ||
349 | <p> | |
350 | <ul> | |
351 | <li>New <a href="tutorial/key_extraction.html#global_fun"><code>global_fun</code></a> | |
352 | predefined key extractor. | |
353 | </li> | |
354 | <li>Added <a href="tutorial/indices.html#iterator_to"><code>iterator_to</code></a> | |
355 | facility. | |
356 | </li> | |
357 | <li>Included <a href="tutorial/creation.html#special_allocator">support for | |
358 | non-standard allocators</a> such as those of | |
359 | <a href="../../interprocess/index.html">Boost.Interprocess</a>, which makes | |
360 | <code>multi_index_container</code>s placeable in shared memory. | |
361 | </li> | |
362 | <li>New versions of <code>modify</code> and <code>modify_key</code> with | |
363 | rollback, as described in the | |
364 | <a href="tutorial/basics.html#ord_updating">tutorial</a>. | |
365 | </li> | |
366 | <li>Indices provide the new <code>cbegin</code>, <code>cend</code> and, | |
367 | when applicable, <code>crbegin</code> and <code>crend</code> | |
368 | member functions, in accordance with the latest drafts of the next | |
369 | revision of the C++ standard. | |
370 | </li> | |
371 | <li>Hinted insertion in ordered indices fully conforms to the resolutions of | |
372 | C++ Standard Library | |
373 | <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#233">Defect | |
374 | Report 233</a>. The new requirement that the point of insertion | |
375 | be always as close as possible to the hint induces a different behavior than | |
376 | exhibited in former releases of Boost.MultiIndex, which can potentially cause | |
377 | backwards compatibility problems; in any case, the likelihood of these | |
378 | compatibility issues arising in a real scenario is very low. | |
379 | </li> | |
380 | <li>Sequenced and random access indices now follow the requirements of the | |
381 | C++ standard for sequence containers with respect to the operations | |
382 | <code>assign(f,l)</code> and <code>insert(p,f,l)</code> (23.1.1/9): if | |
383 | <code>f</code> and <code>l</code> are of the same integral type, the | |
384 | iterator-based overloads of these member functions are avoided: | |
385 | <blockquote><pre> | |
386 | <span class=keyword>typedef</span> <span class=identifier>multi_index_container</span><span class=special><</span> | |
387 | <span class=keyword>int</span><span class=special>,</span><span class=identifier>indexed_by</span><span class=special><</span><span class=identifier>sequenced</span><span class=special><></span> <span class=special>></span> | |
388 | <span class=special>></span> <span class=identifier>sequenced_container</span><span class=special>;</span> | |
389 | ||
390 | <span class=identifier>std</span><span class=special>::</span><span class=identifier>list</span><span class=special><</span><span class=keyword>int</span><span class=special>></span> <span class=identifier>l</span><span class=special>(...);</span> | |
391 | <span class=identifier>sequenced_container</span> <span class=identifier>c</span><span class=special>;</span> | |
392 | ||
393 | <span class=comment>// iterator-based overload of assign</span> | |
394 | <span class=identifier>c</span><span class=special>.</span><span class=identifier>assign</span><span class=special>(</span><span class=identifier>l</span><span class=special>.</span><span class=identifier>begin</span><span class=special>(),</span><span class=identifier>l</span><span class=special>.</span><span class=identifier>end</span><span class=special>());</span> | |
395 | ||
396 | <span class=comment>// The following is equivalent to | |
397 | // c.assign( | |
398 | // static_cast<sequenced_container::size_type>(10),100); | |
399 | // that is, "10" and "100" are not taken to be iterators as | |
400 | // in the previous expression.</span> | |
401 | <span class=identifier>c</span><span class=special>.</span><span class=identifier>assign</span><span class=special>(</span><span class=number>10</span><span class=special>,</span><span class=number>100</span><span class=special>);</span> | |
402 | </pre></blockquote> | |
403 | </li> | |
404 | <li>The performance of ordered indices <code>range</code> and | |
405 | <code>equal_range</code> has been improved. | |
406 | </li> | |
407 | <li>Maintenance fixes.</li> | |
408 | </ul> | |
409 | </p> | |
410 | ||
411 | <h2><a name="boost_1_34">Boost 1.34 release</a></h2> | |
412 | ||
413 | <p> | |
414 | <ul> | |
415 | <li>Added <a href="tutorial/indices.html#rnd_indices">random access | |
416 | indices</a>. | |
417 | </li> | |
418 | <li>Non key-based indices provide new | |
419 | <a href="tutorial/indices.html#rearrange">rearrange facilities</a> | |
420 | allowing for interaction with external mutating algorithms. | |
421 | </li> | |
422 | <li>All predefined Boost.MultiIndex key extractors | |
423 | instantiated for a given type <code>T</code> can handle objects of types | |
424 | derived from or convertible to <code>T</code> (and | |
425 | <a href="reference/key_extraction.html#chained_pointers">chained pointers</a> | |
426 | to those). Previously, only objects of the exact type specified (along with | |
427 | <code>reference_wrapper</code>s and chained pointers to them) were accepted. | |
428 | </li> | |
429 | <li><a href="reference/key_extraction.html#composite_key_compare"><code>composite_key_compare</code></a> | |
430 | and related classes accept operands not included in tuples as if they were passed | |
431 | in a tuple of length 1; this allows the user to omit tuple enclosing in | |
432 | lookup operations involving composite keys when only the first key is provided. | |
433 | </li> | |
434 | <li>The core algorithms of ordered indices have been optimized, yielding | |
435 | an estimated reduction of about 5% in insertion times. | |
436 | </li> | |
437 | <li>Size of ordered indices node headers have been reduced by 25% on | |
438 | most platforms, using a well known | |
439 | <a href="tutorial/indices.html#ordered_node_compression">optimization | |
440 | technique</a>. | |
441 | </li> | |
442 | <li>The tutorial has been restructured, new examples added.</li> | |
443 | <li>Maintenance fixes.</li> | |
444 | </ul> | |
445 | </p> | |
446 | ||
447 | <h2><a name="boost_1_33_1">Boost 1.33.1 release</a></h2> | |
448 | ||
449 | <p> | |
450 | <ul> | |
451 | <li>For ordered and hashed indices, <code>erase(it)</code> and | |
452 | <code>erase(first,last)</code> now return an iterator to the element | |
453 | following those being deleted (previously nothing was returned), in | |
454 | accordance with the C++ Standard Library | |
455 | <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#130">Defect | |
456 | Report 130</a> and issue 6.19 of TR1 | |
457 | <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1837.pdf">Issues | |
458 | List</a>. | |
459 | </li> | |
460 | <li>Boost.MultiIndex offers the usual guarantees with respect to | |
461 | multithreading code provided by most STL implementations: | |
462 | <ol> | |
463 | <li>Concurrent access to different containers is safe.</li> | |
464 | <li>Concurrent read-only access to the same container is safe.</li> | |
465 | </ol> | |
466 | In previous versions of the library, the latter guarantee was not properly | |
467 | maintained if the <a href="tutorial/debug.html#safe_mode">safe | |
468 | mode</a> was set. This problem has been fixed now. | |
469 | </li> | |
470 | <li>Maintenance fixes.</li> | |
471 | </ul> | |
472 | </p> | |
473 | ||
474 | <h2><a name="boost_1_33">Boost 1.33 release</a></h2> | |
475 | ||
476 | <p> | |
477 | <ul> | |
478 | <li>Added <a href="tutorial/indices.html#hashed_indices">hashed indices</a>, | |
479 | whose interface is based on the specification for unordered associative | |
480 | containers by the C++ Standard Library Technical Report (TR1). | |
481 | </li> | |
482 | <li>Added <a href="tutorial/creation.html#serialization">serialization support</a> | |
483 | for <a href="../../serialization/index.html">Boost.Serialization</a>. | |
484 | </li> | |
485 | <li>Destruction of <code>multi_index_container</code>s and <code>clear</code> | |
486 | memfuns now perform faster. | |
487 | </li> | |
488 | <li>Internal changes aimed at reducing the length of symbol names generated | |
489 | by the compiler; cuts of up to a 50% can be achieved with respect to the | |
490 | Boost 1.32 release. This results in much shorter and more readable error | |
491 | messages and has also a beneficial impact on compilers with strict limits on | |
492 | symbol name lengths. Additionally, a section on further | |
493 | <a href="compiler_specifics.html#symbol_reduction">reduction of symbol name | |
494 | lengths</a> has been added. | |
495 | </li> | |
496 | <li>Restructured some parts of the documentation, new examples.</li> | |
497 | <li>Maintenance fixes.</li> | |
498 | </ul> | |
499 | </p> | |
500 | ||
501 | <hr> | |
502 | ||
503 | <div class="prev_link"><a href="future_work.html"><img src="prev.gif" alt="future work" border="0"><br> | |
504 | Future work | |
505 | </a></div> | |
506 | <div class="up_link"><a href="index.html"><img src="up.gif" alt="index" border="0"><br> | |
507 | Index | |
508 | </a></div> | |
509 | <div class="next_link"><a href="acknowledgements.html"><img src="next.gif" alt="acknowledgements" border="0"><br> | |
510 | Acknowledgements | |
511 | </a></div><br clear="all" style="clear: all;"> | |
512 | ||
513 | <br> | |
514 | ||
515 | <p>Revised October 19th 2015</p> | |
516 | ||
517 | <p>© Copyright 2003-2015 Joaquín M López Muñoz. | |
518 | Distributed under the Boost Software | |
519 | License, Version 1.0. (See accompanying file <a href="../../../LICENSE_1_0.txt"> | |
520 | LICENSE_1_0.txt</a> or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"> | |
521 | http://www.boost.org/LICENSE_1_0.txt</a>) | |
522 | </p> | |
523 | ||
524 | </body> | |
525 | </html> |