<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2FLabs%2FModernizeC%2B%2B</id>
	<title>Documentation/Labs/ModernizeC++ - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/index.php?action=history&amp;feed=atom&amp;title=Documentation%2FLabs%2FModernizeC%2B%2B"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModernizeC%2B%2B&amp;action=history"/>
	<updated>2026-04-15T05:50:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/ModernizeC%2B%2B&amp;diff=61293&amp;oldid=prev</id>
		<title>JChris.FillionR: Created page with &quot; == Progress ==  * Available migration guide ** C++11: Update source code to use nullptr ** C++11: Update source...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModernizeC%2B%2B&amp;diff=61293&amp;oldid=prev"/>
		<updated>2019-07-12T15:24:51Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; == Progress ==  * Available &lt;a href=&quot;/wiki/Documentation/Nightly/Developers/Tutorials/MigrationGuide&quot; title=&quot;Documentation/Nightly/Developers/Tutorials/MigrationGuide&quot;&gt;migration guide&lt;/a&gt; ** C++11: Update source code to use nullptr ** C++11: Update source...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
== Progress ==&lt;br /&gt;
&lt;br /&gt;
* Available [[Documentation/Nightly/Developers/Tutorials/MigrationGuide|migration guide]]&lt;br /&gt;
** C++11: Update source code to use nullptr&lt;br /&gt;
** C++11: Update source code to use override&lt;br /&gt;
** C++11: Update source code to use = delete&lt;br /&gt;
** C++11: Update source code to use = default&lt;br /&gt;
&lt;br /&gt;
* Slicer code base updates:&lt;br /&gt;
** COMP: Update build system removing support for C++98/Qt4/VTK7&lt;br /&gt;
** Replace ITK_NULLPTR, VTK_NULLPTR, NULL with nullptr&lt;br /&gt;
** Replace VTK_OVERRIDE, ITK_OVERRIDE with override&lt;br /&gt;
** COMP: Update minimum required CMAKE_OSX_DEPLOYMENT_TARGET to 10.11&lt;br /&gt;
** STYLE: Modernize sources using override instead of virtual keyword&lt;br /&gt;
** STYLE: Modernize: use delete for not implemented functions&lt;br /&gt;
** r28037: STYLE: Modernize: use default for empty constructors&lt;br /&gt;
&lt;br /&gt;
== Modernize to c++11 ==&lt;br /&gt;
&lt;br /&gt;
'''The use of auto''' &lt;br /&gt;
&lt;br /&gt;
  run-clang-tidy.py -checks=-*,modernize-use-auto  -header-filter=.* -fix &lt;br /&gt;
&lt;br /&gt;
The automatic fix use auto in cases where static_cast is used:&lt;br /&gt;
&lt;br /&gt;
  - int a = static_cast&amp;lt;int&amp;gt;(something);&lt;br /&gt;
  + auto a = static_cast&amp;lt;int&amp;gt;(something);&lt;br /&gt;
&lt;br /&gt;
No much gain on this particular case, however, when using iterators and other verbose types, it really helps readability.&lt;br /&gt;
&lt;br /&gt;
The change should be discussed with the main developers to reach a consensus. VTK and ITK are using auto in a lot of cases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Move not implemented constructors and assignment operators to the public interface''' &lt;br /&gt;
&lt;br /&gt;
Now that we use = delete, we don't need the constructors and assignment operator to be in the private interface.&lt;br /&gt;
Moving them to the public interface is better. Including better integrations with IDE's.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Other modernizers'''&lt;br /&gt;
  clang-tidy --list-checks -checks='*' | grep &amp;quot;modernize&amp;quot;&lt;br /&gt;
    modernize-avoid-bind&lt;br /&gt;
    modernize-deprecated-headers&lt;br /&gt;
    modernize-loop-convert&lt;br /&gt;
    modernize-make-shared&lt;br /&gt;
    modernize-make-unique&lt;br /&gt;
    modernize-pass-by-value&lt;br /&gt;
    modernize-raw-string-literal&lt;br /&gt;
    modernize-redundant-void-arg&lt;br /&gt;
    modernize-replace-auto-ptr&lt;br /&gt;
    modernize-replace-random-shuffle&lt;br /&gt;
    modernize-return-braced-init-list&lt;br /&gt;
    modernize-shrink-to-fit&lt;br /&gt;
    modernize-unary-static-assert&lt;br /&gt;
    modernize-use-auto # ToDiscuss&lt;br /&gt;
    modernize-use-bool-literals&lt;br /&gt;
    modernize-use-default-member-init&lt;br /&gt;
    modernize-use-emplace # easy!&lt;br /&gt;
    modernize-use-equals-default # DONE&lt;br /&gt;
    modernize-use-equals-delete # DONE&lt;br /&gt;
    modernize-use-noexcept &lt;br /&gt;
    modernize-use-nullptr # DONE&lt;br /&gt;
    modernize-use-override # DONE&lt;br /&gt;
    modernize-use-transparent-functors&lt;br /&gt;
    modernize-use-uncaught-exceptions&lt;br /&gt;
    modernize-use-using # Better style, to discuss.&lt;br /&gt;
&lt;br /&gt;
Check https://github.com/InsightSoftwareConsortium/ITK/tree/master/Utilities/ITKv5Preparation for a list of commands used in the &lt;br /&gt;
ITKv5 transition.&lt;/div&gt;</summary>
		<author><name>JChris.FillionR</name></author>
		
	</entry>
</feed>