Difference between revisions of "C++11"
Jump to navigation
Jump to search
Line 70: | Line 70: | ||
! | ! | ||
! Windows | ! Windows | ||
! Mac | ! Mac 10.6 | ||
! | ! Mac 10.7 | ||
! | ! Fedora 20 | ||
! Red Hat 7.0 | |||
! Red Hat 6.5 | |||
! Comment | ! Comment | ||
|- | |- | ||
! Feature | ! Feature | ||
! TDM-GCC 4.6 | ! TDM-GCC 4.6 | ||
! | ! GCC 4.2 | ||
! | ! Clang 3(?) | ||
! | ! GCC 4.8.2 | ||
! GCC 4.8.2 | |||
! GCC 4.4.7 | |||
! | ! | ||
|- | |- | ||
Line 85: | Line 89: | ||
| style="background:LightGreen;"| | | style="background:LightGreen;"| | ||
| | | | ||
| | |||
| style="background:LightGreen;"| | |||
| style="background:LightGreen;"| | |||
| | | | ||
| | | Defined in <memory> | ||
|- | |- | ||
| shared_ptr<> | | shared_ptr<> | ||
| style="background:LightGreen;"| | | style="background:LightGreen;"| | ||
| | | | ||
| | | | ||
| style="background:LightGreen;"| | |||
| style="background:LightGreen;"| | |||
| | | | ||
| Defined in <memory> | |||
|- | |- | ||
| auto | | auto | ||
| style="background:LightGreen;"| | | style="background:LightGreen;"| | ||
| | | | ||
| | | | ||
| style="background:LightGreen;"| | |||
| style="background:LightGreen;"| | |||
| | | | ||
| | | | ||
Line 106: | Line 116: | ||
| style="background:LightGreen;"| | | style="background:LightGreen;"| | ||
| | | | ||
| | | | ||
| style="background:LightGreen;"| | |||
| style="background:LightGreen;"| | |||
| | | | ||
| | | | ||
Line 113: | Line 125: | ||
| style="background:LightGreen;"| | | style="background:LightGreen;"| | ||
| | | | ||
| | | | ||
| style="background:LightGreen;"| | |||
| style="background:LightGreen;"| | |||
| | | | ||
| | | | ||
|} | |} |
Revision as of 07:43, 28 June 2014
C++11 usage status
The table lists C++11 features and whether they can be used in Inkscape or not (yet). Add C++11 features that you would like to use to the table, so that we know what to test for to increase the C++11 "allowance".
Feature | Can use? | Comment |
---|---|---|
std::unique_ptr<> | not yet | replaces boost::scoped_ptr<> and std::auto_ptr<> |
std::shared_ptr<> | not yet | replaces boost::shared_ptr<> |
std::unordered_*<> | replaces the hack in util/unordered-containers.h | |
auto (type inference) | not yet | |
enum class | not yet | |
range-based for | not yet | |
lambda functions | not yet | in-place defitions for small functions |
constructor delegation | not yet | reduces boilerplate when an object has many constructors |
right angle brackets in templates | not yet | fixes coding style oddity |
async, futures | not yet | allows easy multithreading |
toxic feature of doom | NO | Never use this (in case we stumble upon C++11 features that we really don't like) |
supported feature | from 0.50 |
C++11 platform status
Also see this page http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
Note that "__cplusplus" is always "1" for GCC 4.6 that is used on Windows. So "#if __cplusplus < 201103L" or variants does not work to choose between C++03 or C++11 code.
The table lists C++11 features and whether they work in trunk on a certain platform as advertised. If all lights are green -> set the light to green in the [C++11 usage status] section (taking current trunk version into account).
Windows | Mac 10.6 | Mac 10.7 | Fedora 20 | Red Hat 7.0 | Red Hat 6.5 | Comment | |
---|---|---|---|---|---|---|---|
Feature | TDM-GCC 4.6 | GCC 4.2 | Clang 3(?) | GCC 4.8.2 | GCC 4.8.2 | GCC 4.4.7 | |
unique_ptr<> | Defined in <memory> | ||||||
shared_ptr<> | Defined in <memory> | ||||||
auto | |||||||
enum class | |||||||
range-based for |