[ITK-dev] itkStaticConstMacro definition

Matt McCormick matt.mccormick at kitware.com
Mon Oct 5 12:18:50 EDT 2015


Hi Luc,

> I'm currently trying to push code that exploits SFINAE and itk::EnableIf.

Cool :-)


> I have a problem with clang, in C++98 mode, as it barks when we are
> using an unnamed type as a template parameter
> -> "note: unnamed type used in template argument was declared here"
>
> There is an easy fix for it: drop the compatibility to old compilers
> like VC++6 when writing metaprograms. In this case, itkStaticConstMAcro
> shall not generate an enum,
>   enum { variable = value };  // (1)
> but
>   const static type variable = value; // (2)
>
> I've searched google and gerrit to see why definition (2) has been
> commented out, but I've found nothing. If I understand correctly, in the
> past, a CMake test was used to choose how the macro shall be written.
> This is not the case any more.

Yes, that is also my recollection. But, nobody has just bothered to
update the definition.


> So my questions:
> Does anybody remember/know why definition (2) has been dropped? Can't we
> revert to it (or at least to a conditional definition of
> itkStaticConstMacro) for compilers clang that are pedantically compliant
> to C++98 standard?
> (constexpr will of course be required with C++11 compliant compilers
> used in C++11 (or more) mode)

Yes :-)


> BTW, which is the oldest VC++ compiler officially supported by ITK? Must
> I understand from this that VC++7.1 support has already been dropped
> since 2012?
> (http://www.itk.org/Wiki/ITK_Release_4/Modern_C%2B%2B#Fully_Committed_to_Support)

Correct.  The current oldest version of VC++ is 9.


Thanks,
Matt


More information about the Insight-developers mailing list