MantisBT - CMake
View Issue Details
0015311CMakeCMakepublic2014-12-16 14:462015-06-01 08:38
Paweł Stankowski 
Stephen Kelly 
hightextalways
closedfixed 
 
CMake 3.1.1CMake 3.1.1 
0015311: CMAKE_CXX_KNOWN_FEATURES variable documentation should be corrected
CMake 3.1 documentation available at www.cmake.org contains reference to obsolete documentation of override control features. According to

 http://msdn.microsoft.com/en-us/library/hh567368.aspx [^]

final version of override control in C++11 is based on changes from N3206 and N3272 documents. It means that defining [[hiding]],[[override]] and other attributes and hiding control are not part of C++11 Standard.

Current CMake documentation:
cxx_final
    Override control final keyword, as defined in N2928.
cxx_override
    Override control override keyword, as defined in N2928.

Even CMake unit tests Tests/CompileFeatures/cxx_{final,override}.cpp check only for 'override' keyword support, and not for attributes support from N2928.

There is a bug in GCC site, which potencially could be a reason for this one.

The GCC 4.7 changes page

 https://gcc.gnu.org/gcc-4.7/changes.html [^]

contains an example of usage for 'override' keyword (and not attribute), but the 'Status of Experimental C++11 Support in GCC 4.7' page

 https://gcc.gnu.org/gcc-4.7/cxx0x_status.html [^]

lists only proposal N2928 as the one being implemented. This bug was fixed in the general C++0x/C++11 Support in GCC page

 https://gcc.gnu.org/projects/cxx0x.html [^]

Btw: Support for C++11 attribute syntax was added in g++ 4.8

 https://gcc.gnu.org/gcc-4.8/changes.html [^]

No tags attached.
Issue History
2014-12-16 14:46Paweł StankowskiNew Issue
2014-12-16 14:52Brad KingAssigned To => Stephen Kelly
2014-12-16 14:52Brad KingStatusnew => assigned
2014-12-16 14:52Brad KingTarget Version => CMake 3.2
2014-12-16 14:52Paweł StankowskiNote Added: 0037469
2014-12-16 17:35Paweł StankowskiNote Edited: 0037469bug_revision_view_page.php?bugnote_id=37469#r1648
2015-01-19 14:16Stephen KellyNote Added: 0037743
2015-01-19 14:16Stephen KellyDescription Updatedbug_revision_view_page.php?rev_id=1676#r1676
2015-01-19 14:17Stephen KellyNote Deleted: 0037743
2015-01-19 14:23Stephen KellyNote Added: 0037744
2015-01-19 16:17Paweł StankowskiNote Added: 0037746
2015-01-19 16:34Stephen KellyNote Added: 0037747
2015-01-19 16:34Stephen KellyStatusassigned => resolved
2015-01-19 16:34Stephen KellyFixed in Version => CMake 3.1.1
2015-01-19 16:34Stephen KellyResolutionopen => fixed
2015-01-19 16:38Brad KingTarget VersionCMake 3.2 => CMake 3.1.1
2015-01-19 16:40Brad KingNote Added: 0037748
2015-01-19 18:19Paweł StankowskiNote Added: 0037751
2015-06-01 08:38Robert MaynardNote Added: 0038848
2015-06-01 08:38Robert MaynardStatusresolved => closed

Notes
(0037469)
Paweł Stankowski   
2014-12-16 14:52   
(edited on: 2014-12-16 17:35)
Sorry for links, I was trying to use DokuWiki formatting from http://www.mantisbt.org/wiki/doku.php/mantisbt:syntax [^] which apparently is not supported by this site.

Why is this bug scheduled for fix in CMake 3.2? This is documentation bug, shouldn't that be fixed in CMake 3.1.x series as well?

(0037744)
Stephen Kelly   
2015-01-19 14:23   
Hi,

I removed the DokuWiki formatting to aid readabililty.

The N2928 document shows the motivation for the feature, and is therefore useful to users of it. You are right though that the final standard did not use attributes, but keywords instead. The N3206 and N3272 documents don't list motivation, but are differential revisions on the particular standardese. N3206 is confusing from a user perspective because it introduces virtual specifier keywords ('new' and 'explicit') which are then removed in N3272.

So, what should the documentation link to? All three of those documents? Or none of them? Is there a more-suitable single link to show the motivation and syntax of the feature?
(0037746)
Paweł Stankowski   
2015-01-19 16:17   
Most compilers list all 3 documents and links. This is how GCC, Intel Compiler, MSDN, LLVM and Clang sites handle this situation.
(0037747)
Stephen Kelly   
2015-01-19 16:34   
Ok, I've updated the CMake docs to do the same.

 Help: Link relevant documents for virtual override features (0015311)
 http://www.cmake.org/gitweb?p=cmake.git;a=commitdiff;h=59e3569c [^]
(0037748)
Brad King   
2015-01-19 16:40   
Re 0015311:0037747: Thanks, Steve. I backported it for merge to 'release' for 3.1.1:

 Help: Link relevant documents for virtual override features
 http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d8f93f6e [^]
(0037751)
Paweł Stankowski   
2015-01-19 18:19   
Looks very good. Thanks, guys :)
(0038848)
Robert Maynard   
2015-06-01 08:38   
Closing resolved issues that have not been updated in more than 4 months.