Difference between revisions of "C++11"

From Inkscape Wiki
Jump to navigation Jump to search
Line 70: Line 70:
!  
!  
! Windows
! Windows
! Mac
! Mac 10.6
! Linux A
! Mac 10.7
! Linux B
! 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