Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Artifact ID: | ef28bfde9e29994b79a541640925d8f0f40b0197 |
---|---|
Page Name: | Features/Extras |
Date: | 2017-04-23 22:53:31 |
Original User: | luismachuca |
Parent: | dd3c78a65f9f2ab2ca44f849825b6001db4a5e0c (diff) |
Next | 6073825410c97deff2db39a197f65fc5bd33fd5b38f9b1c9314fb13289a03a19 |
Besides the normal features that are activated automatically upon inclusion of the library, cxxomfort provides a varied set of features that are not enabled by default by any of a variety of reasons, mostly:
- the syntax is too different from the C++11 native feature.
- the feature is heavily compiler-dependent.
- the feature is not standardized yet and/or present only as a proposal, at least up to C++14 (as of May 2015).
In order to use these features, the specific header must be #include
'd explicitly. These headers live in the extras/
subdirectory.
Last update of this listing: May 2015
List of Features
(In alphabetical order)
array_ref<>
proposal- "assert" Extensions Proposal
- Auto/Decltype Emulation
dynarray<>
make_array
(to be completed)optional<>
- Ranges (to be completed)
- Scoped Enumerations (to be completed)
- Other future proposals
"assert" variants
Auto/Decltype Emulation
Header: cxxomfort/extras/auto.hpp
.
Macro: if enabled, CXXOMFORT_USING_auto
is defined.
This header adds the following macros:
CXXO_AUTO( variablename, expr ) CXXO_DECLTYPE( expr )
The above macros allow for emulation of C++11's new "auto" and "decltype" semantics if the compiler supports an equivalent semantic such as typeof in C++03 mode (as GCC's __typeof__
). Usage is very simple:
typdef std::list<short> SHL_t; // short-list type SHL_t shl; ... CXXO_AUTO (M, shl.size() ); // M is automatically declared as eg.: an unsigned int in this case ... cout<< M<< endl;
In C++11, the macros extend simply to auto variablename = expr
and decltype(expr)
respectively.
In C++03, the macros extend to a compiler-supported "typeof" invocation; if none is available, compilation fails with an error messaage of "typeof not supported
".
Requirements:
- In non-C++11 mode, the compiler must support a keyword like __typeof__.
Known Limitations:
- This feature works in Microsoft C++ ≥ 8.0 thanks to a combination of documented hacks for typeof emulation; however, in this case it can not be used in all the contexts a normal
__typeof__
can, so use with caution. - When in C++03 mode, remember "typeof" intrinsics may not resolve reference types the same way C++11's decltype does.
Scoped Enumerations
(to be completed)
»Possible Future Features
I'm considering adding some features that are either from C++11 or from current proposals for TR2 / C++2x and that are easy enough and useful enough to have them implemented in this library. No more details at the moment though.
In consideration at the moment of this writing:
- default-value-initialized wrapper (from Boost).
- "degenerate" (primitive type + singular term) proposal.
tuple<>
output to streams.- C++14's
scoped_resource
proposal. - A tuple
invoke
function. - begin/end for typesafe enumeration types.
is_swappable
- Fixed-time calculation versions for
equal
,mismatch
and thefind_*
family of algorithms.
- Back to Main Features Documentation.
- Implementation Status for C++ proposals.
- Back to the beginning.