The BOOST_STATIC_ASSERT documentation indicates I can use it at template class scope (private recommended) - the assert shouldn't get triggered unless the class is instantiated. This seems to work ok with gcc-3.* but not with the intel compiler (8.1). // begin example program #include "boost/static_assert.hpp" template<class T> struct foo { foo (int) { } private: BOOST_STATIC_ASSERT (false); }; template <> struct foo<int> { foo (int i) { } }; int main () { foo<int> f (7); } // end example program I get the following error: foo.cpp(8): error: incomplete type is not allowed BOOST_STATIC_ASSERT (false); ^ compilation aborted for foo.cpp (code 2) Whether I provide the specialization for int or not, or whether I ever use struct foo in main or not. Is this a know issue? Do I have a build problem? I'm using boost version 1.30.2. Thanks Scott