Uses alternative scheme for supporting temps
Uses alternative scheme for supporting temps

this seems easier implemented.  If the argument to enumerate() is an
lvalue then Enumerable is templated on an lvalue reference type (just
because of how universal references work).  Otherwise it gets templated
on a non-reference type.  the std::forward in the constructor results in
a move construction when templated on a non-reference type, and an
lvalue reference bind when it is a reference type.

jkhoogland/cppitertools,tempbottle/cppitertools,jkhoogland/cppitertools,ryanhaining/cppitertools,ryanhaining/cppitertools,jkhoogland/cppitertools,ryanhaining/cppitertools,tempbottle/cppitertools,tempbottle/cppitertools