I have the following class and when the schedule method tries to execute find, internally it reaches out to .empty method which triggers a Segment Fault error because of the inner current_sizevariable (debug view says: <read memory from 0xf0000000788 failed (0 of 8 bytes read)>):
template <std::size_t N>
using TimelineEvent = etl::vector<Event, N>;
template <std::size_t S, std::size_t N>
using Arrangement = etl::unordered_map<unsigned int, TimelineEvent<N>, S, S>;
template <std::size_t S, std::size_t N>
class Timeline
{
private:
Transport* transport_;
Arrangement<S, N> arrangement_;
etl::deque<unsigned int, S> timeline_;
public:
Timeline(Transport* transport) : transport_(transport), arrangement_() {}
~Timeline() = default;
//copy
Timeline(const Timeline&) = delete;
Timeline& operator=(const Timeline&) = delete;
// move
Timeline(Timeline&&) = delete;
Timeline& operator=(Timeline&&) = delete;
void schedule(Event event)
{
if(arrangement_.find(event.time) != arrangement_.end())
{
arrangement_[event.time] = TimelineEvent<N>{event};
auto it = etl::lower_bound(timeline_.begin(), timeline_.end(), event.time);
timeline_.insert(it, event.time);
}
}
...
Usage example:
Timeline<4, 2> timeline{&transport};
timeline.schedule({{0, n8}, {0, n4}, {n4, n2}, {n2, n1}});
Any ideas why?