diff --git a/src/resolvelib/structs.py b/src/resolvelib/structs.py
index <HASH>..<HASH> 100644
--- a/src/resolvelib/structs.py
+++ b/src/resolvelib/structs.py
@@ -116,7 +116,8 @@ class _FactoryIterableView(object):
     """
 
     def __init__(self, factory):
-        self._iterable = factory()
+        self._factory = factory
+        self._iterable = None
 
     def __repr__(self):
         return "{}({})".format(type(self).__name__, list(self))
@@ -131,7 +132,10 @@ class _FactoryIterableView(object):
     __nonzero__ = __bool__  # XXX: Python 2.
 
     def __iter__(self):
-        self._iterable, current = itertools.tee(self._iterable)
+        iterable = (
+            self._factory() if self._iterable is None else self._iterable
+        )
+        self._iterable, current = itertools.tee(iterable)
         return current
fix: all the factory only when needed