Last line failed due to:
Error: Incorrect referencing of list_it rain.cc:365:
Error: illegal pointer to class object list_it 0x0 2610 rain.cc:365:
*** Interpreter error recovered ***
test.cpp:9: error: ‘>>’ should be ‘> >’ within a nested template argument list
test.cpp:10: error: ‘>>’ should be ‘> >’ within a nested template argument list
but if I add spaces as it says, it compiles without error or warning.
For portability, or more specifically compiler-independence, it is best to use "> >" with a space separating the two closing angle-brackets. This is certainly something to be familiar with, as not all error messages are so explicit.
You could use typedefs in this situation, as well. Here is an example: