[Insight-users] TODO for AffineTransform::Rotate3D()

Lorensen, William E (Research) lorensen at crd.ge.com
Tue, 27 Jan 2004 07:21:49 -0500


itk has a similar facility called ConceptChecking. It is described in
Code/Common/itkConceptChecking.h. Unfortunately, not all classes take
advantage of it.

Bill

-----Original Message-----
From: Benjamin King [mailto:king.benjamin at mh-hannover.de]
Sent: Tuesday, January 27, 2004 4:16 AM
To: ITK
Subject: [Insight-users] TODO for AffineTransform::Rotate3D()


Hello,

I came across the AffineTransform::Rotate3D() documentation and the author 
needs some sort of compile-time assertion depending on the template 
parameter NDimensions.
I bought "Modern C++ Design" by Andrei Alexandrescu some time ago and 
never since dared to read more than the first few pages. Fortunately 
compile-time assertions are already done on page 25 of this amazing book 
=). See for yourself (credit of course goes to Andrei):

   template<bool> struct CompileTimeError;
   template<> struct CompileTimeError<true> { };
   #define STATIC_CHECK(expr, msg) {CompileTimeError<(expr) != 0> 
ERROR_##msg; (void)ERROR_##msg;}

Only the spezialization for 'true' of the bool templated 
CompileTimeError-class can be instatiated. This is exactly what the 
STATIC_CHECK macro tries to do. If you call it with an expression that 
evaluates to false at compile time, the compiler will tell that 
construction of the variable ERROR_##msg failed.
I have no idea what that '(void)ERROR_##msg;' is needed for. I think it's 
there to prevent a (useless) construction in cases where the assertion 
holds.

You will find pointers to this and other code from the book on 
http://www.moderncppdesign.com

HIH,
   Benjamin

-- 
Benjamin King
Institut fur Medizinische Informatik
Medizinische Hochschule Hannover
Tel.: +49  511  532-2663
_______________________________________________
Insight-users mailing list
Insight-users at itk.org
http://www.itk.org/mailman/listinfo/insight-users