static-assert

Ways to ASSERT expressions at build time in C

I'm tidying up some older code that uses 'magic numbers' all over the place to set hardware registers, and I would like to use constants instead of these numbers to make the code somewhat more expressive (in fact they will map to the names/values used to document the registers). However, I'm concerned that with the volume of changes I m...

Wanted: a C++ template idea to catch an issue, but at compile time?

Hello, We have a const array of structs, something like this: static const SettingsSuT _table[] = { {5,1}, {1,2}, {1,1}, etc }; the structure has the following: size_bytes: num_items: Other "meta data" members So the "total size" is size_bytes*num_items for a single element. All of this information is in the const array, availabl...

How to statically assert a common property of many classes

Let's say I have 3 classes. I expect sizeof() each class to be exactly the same--say 512 bytes. How can I use something like BOOST_STATIC_ASSERT to apply to all of them such that I only need to use BOOST_STATIC_ASSERT in a single place (DRY principle) Evaluated once at compile-time and not run-time Note: we can use whatever C++ tech...

What does static_assert do, and what would you use it for?

Could you give an example where static_assert(...) 'C++0x' would solve the problem in hand elegantly? I am familiar with run-time assert(...). When should I prefer static_assert(...) over regular assert(...)? Also, in boost there is something called BOOST_STATIC_ASSERT, is it the same as static_assert(...)? ...

C Compile-Time assert with constant array

I have a very big constant array that is initialized at compile time. typedef enum { VALUE_A, VALUE_B,...,VALUE_GGF } VALUES; const int arr[VALUE_GGF+1] = { VALUE_A, VALUE_B, ... ,VALUE_GGF}; I want to verify that the array is initialized properly, something like: if (arr[VALUE_GGF] != VALUE_GGF) { printf("Error occurred. arr[VA...

BOOST_STATIC_ASSERT without boost

Since boost is forbidden in a company I work for I need to implement its functionality in pure C++. I've looked into boost sources but they seem to be too complex to understand, at least for me. I know there is something called static_assert() in the C++0x standart, but I'd like not to use any C++0x features. ...

C++: static assert for const variables?

Static asserts are very convenient for checking things in compile time. A simple static assert idiom looks like this: template<bool> struct StaticAssert; template<> struct StaticAssert<true> {}; #define STATIC_ASSERT(condition) do { StaticAssert<(condition)>(); } while(0) This is good for stuff like STATIC_ASSERT(sizeof(float) == 4)...

boost static_assert with message?

Hi, on 1.43 boost it seems that BOOST_STATIC_ASSERT just allows to put a boolean value, is there some alternative that allows me to display a message as well on the compile error? ...

Static assert in C

What's the best way to achieve compile time static asserts in C (not C++), with particular emphasis on GCC? ...

How to get failure trace with Junit4

hello, in my Junit test, I use usually "AssertEquals" and when the test fails, the trace is properly displayed in the Failure trace of JUnit/eclipse I would like to know how to get these trace to show it in a file? @Test public void testButtons() { SelectionButton().ButtonFile(); assertEquals("selected button should be...

Use static_assert to check types passed to macro

I unfortunately have several macros left over from the original version of my library that employed some pretty crazy C. In particular, I have a series of macros that expect certain types to be passed to them. Is it possible to do something along the lines of: static_assert(decltype(retval) == bool); And how? Are there any clever alte...