
Johan RĂ¥de wrote:
We aren't actually testing static array initialization, are we? How do we know that it works at all? :-)
I can think of two tests that might be useful. I haven't had a chance to try either one yet. After adding in the appropriate #includes and namespace qualification, and following whatever the standard Boost test construction guidelines are, do these look like they would do the job? 1. Test that it is POD: struct x {}; BOOST_STATIC_ASSERT(!is_pod<x>::value || is_pod<array<int> >::value) On most compilers, is_pod always yields false for structs, and this test should pass, but is useless. On those compilers for which is_pod works on structs, this test will pass iff array<int> is a POD. 2. Test that it gets statically initialized: test_static_initialization.h: extern array<int> a; extern array<int> b; extern bool a_is_initialized; extern bool b_is_initialized; a.cpp: #include "test_static_initialization.h" array<int> a = { 1 }; bool const b_is_initialized = b[0] == 1; b.cpp: #include "test_static_initialization.h" array<int> b = { 1 }; bool const a_is_initialized = a[0] == 1; test_static_initialization.cpp: #include "test_static_initialization.h" int main() { assert(a_is_initialized); assert(b_is_initialized); } What do you think? -- Todd Greer <tgreer (at) affinegy {dot} [com]>