Consider the following function:

```
template<int N> f()
{
    if(N==5)
    {
        std::cerr << "N=5 is not supported!\n";
        abort();
    }
    do_real_work(N);
}

```

How is it possible to convert the run-time error message into a compile-time error? I guess I could use `static_assert` if I used C++11, but what about C++03?