Trying to use static
members in a class template will cause you some grief as you'll need to explicitly instantiated them. To quickly address the immediate question: you just need to use the correct syntax for the definition.
template <typename E>
static LL<E> LL<E>::l;
However, if the compiler ends up instantiating this data member in multiple translation units you'll get multiply defined symbols. For various reasons you are much better off nesting the object into a function and return a reference from there instead:
template <typename E>
class LL {
static LL<E>& l();
// ...
};
template <typename E>
LL<E>& LL<E>::l() { static LL<E> rc; return rc; }
That said, you should seek not to use any global object at all! They tend to cause lots of problems, even if their access is constrained to be done from a given class.