
13 Aug
2011
13 Aug
'11
10:30 a.m.
On 08/12/2011 07:59 PM, Greg Rubino wrote:
struct random_activity_planner {
random_activity_planner(vector<activity>& a, posix_time::ptime o) : activities(a) , origin(o) {}
void operator()() {
g_mutex.lock(); posix_time::ptime start(origin + posix_time::seconds(rand() % 1000)); posix_time::ptime end(start + posix_time::seconds(rand() % 1000)); activities.push_back(activity(start, end)); g_mutex.unlock();
}
vector<activity>& activities; const posix_time::ptime& origin;
};
You store a dangling reference to a temporary object in the random_activity_planner::origin. Thus the result of operator() is undefined.