Source: http://www.lingref.com/cpp/tls/2004/paper1512.pdf