// why do Borland and Intel reject line in question?
#include <iostream>
#include <boost/static_assert.hpp>

template< typename T >
void f( T & t )
{
  std::cout << sizeof(T) << "\n";
  BOOST_STATIC_ASSERT( sizeof(T) ); // line in question
}

int main()
{
  long l;
  f(l);
  return 0;
} 