VirtualBox

source: vbox/trunk/include/iprt/cpputils.h@ 4011

Last change on this file since 4011 was 3630, checked in by vboxsync, 17 years ago

iprt_hdr_h -> _iprt_hdr_h

  • Property svn:eol-style set to native
File size: 1.9 KB
Line 
1/** @file
2 * innotek Portable Runtime - C++ Utilities (useful templates, defines and such).
3 */
4
5/*
6 * Copyright (C) 2006-2007 innotek GmbH
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License as published by the Free Software Foundation,
12 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13 * distribution. VirtualBox OSE is distributed in the hope that it will
14 * be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * If you received this file as part of a commercial VirtualBox
17 * distribution, then only the terms of your commercial VirtualBox
18 * license agreement apply instead of the previous paragraph.
19 */
20
21#ifndef ___iprt_cpputils_h
22#define ___iprt_cpputils_h
23
24/** @defgroup grp_rt_cpputils C++ Utilities
25 * @ingroup grp_rt
26 * @{
27 */
28
29/**
30 * Shortcut to |const_cast<C &>()| that automatically derives the correct
31 * type (class) for the const_cast template's argument from its own argument.
32 * Can be used to temporarily cancel the |const| modifier on the left-hand side
33 * of assignment expressions, like this:
34 * @code
35 * const Class that;
36 * ...
37 * unconst (that) = some_value;
38 * @endcode
39 */
40template <class C>
41inline C &unconst (const C &that) { return const_cast <C &> (that); }
42
43
44/**
45 * Shortcut to |const_cast<C *>()| that automatically derives the correct
46 * type (class) for the const_cast template's argument from its own argument.
47 * Can be used to temporarily cancel the |const| modifier on the left-hand side
48 * of assignment expressions, like this:
49 * @code
50 * const Class *that;
51 * ...
52 * unconst (that) = some_value;
53 * @endcode
54 */
55template <class C>
56inline C *unconst (const C *that) { return const_cast <C *> (that); }
57
58/** @} */
59
60#endif
61
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette