Terje Slettebų <[EMAIL PROTECTED]> writes: >>From: "David Abrahams" <[EMAIL PROTECTED]> > >> Dirk Gerrits <[EMAIL PROTECTED]> writes: >> >> > Dirk Gerrits wrote: >> > > >> > > I'd say something like: >> > > >> > > #ifdef STATIC_NDEBUG >> > > # define BOOST_STATIC_ASSERT2(e) BOOST_STATIC_ASSERT(e) >> > > #else >> > > # define BOOST_STATIC_ASSERT2(e) (void(e)) >> > > #endif >> > > >> > > Analogous to <cassert>. >> > >> > Argh, the if and else branches should be reversed of course. You've >> > gotta love negative logic. ;) >> >> I like the basic idea, but are you sure it will work in all the >> contexts where BOOST_STATIC_ASSERT works? I think BOOST_STATIC_ASSERT >> functions like a declaration, syntactically. > > Then how about simply: > > #ifndef STATIC_NDEBUG > # define BOOST_STATIC_ASSERT2(e) BOOST_STATIC_ASSERT(e) > #else > # define BOOST_STATIC_ASSERT2(e) // Possibly "void(0)" here, like > "assert" > #endif > > By the way, what's the point with "void(0)", compared to nothing? Both > "void(0);" and ";" are valid statements.
is ";" legal where a declaration is expected? class X { ; // legal? }; Comeau says it isn't: MODE:strict errors C++ "ComeauTest.c", line 3: error: extra ";" ignored, In C: A function definition does not end with a semicolon In C++: A function definition, extern "C" or namespace, does not end with a semicolon ; // legal? ^ -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost