Hi Dan,
I'm at loss... nothing suspicious so far. And without VC7, I can't debug this. Let's try to narrow the problem down. 1. You compile examples/file_dependency.cpp, right? 2. It throws exception inside dijskta_shortets_path_no_init, right? 3. Exception is thrown from 'examine_edge' and the exception is 'negative_edge', right? 4. Could you tell what's the value of 'm_zero' and what's the value of 'e' --- I mean what's the source and target vertex? What's result of 'get' invocation?
1. yes. 2. yes. 3. yes. 4. m_zero = 0x00000000, get( m_weight, e) = 0x00000001. e.m_source = 0x00000000, e.m_target = 0x00000004
when I changed the compare object from std::greater<int> to std::less<int> or std::less_equal<int>, I got no exceptions, but the results were all the files on time slot 0.
Needless to say, it's somewhat confusing. Any insight ?
That's *confusing*. Also, there's very stange comment in file_dependency.cpp: compare, combine, 0, // Since we are using > instead of >, we std::numeric_limits<int>::max(), // flip 0 and inf. "Using >" instead of ">" :-) Well, anyway, in my case m_zero is 2147483647, which makes me suspect std::numeric_limits<int>::max() is buggy on your compiler/system. Could you try chaning it by literal 2147483647, and report your results? - Volodya