The post is interesting, but is there anything stopping you using the following...
template<typename T>
struct Link
{
T obj;
Link *link;
}
That looks pretty much like the intrusive version in memory, right?