K-ballo changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar.cct.lsu.edu | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | Buildbot: http://rostam.cct.lsu.edu/ | Log: http://irclog.cct.lsu.edu/
nanmiao has quit [Quit: Connection closed]
jehelset has quit [Remote host closed the connection]
<gonidelis[m]>
K-ballo: > [...] but may invalidate the elements themselves, or even references
<gonidelis[m]>
i think i understand iterator invalidation
<gonidelis[m]>
it's simple as just resizing your container for example...
<K-ballo>
most containers won't invlaidate iterators on resize
<gonidelis[m]>
but "invalidating elements"? "OR EVEN REFS"? now that's a devil's thing
<gonidelis[m]>
what's that supposed to mean?
<gonidelis[m]>
<K-ballo "most containers won't invlaidate"> what's the most usual case of iterator invalidation?
<K-ballo>
erasure
<gonidelis[m]>
type erasure?
<K-ballo>
no, types have nothing to do with it
<K-ballo>
if you erase an element from a container, any iterator pointing to it is invalidated, for all containers everywhere
<gonidelis[m]>
hm
<gonidelis[m]>
seriously?
<K-ballo>
ambiguous, "it" being the erased element, not the container
<gonidelis[m]>
i thought that the usual case was that when you erase sth, you jump your iterator to the next accesible element
<gonidelis[m]>
yy
<K-ballo>
it = cont.erase(it);
<K-ballo>
after cont.erase(it), it becomes invalid, so you need to reasign it
<gonidelis[m]>
huh
<gonidelis[m]>
ok
<gonidelis[m]>
cool
<K-ballo>
now there's some debate of whether that applies to vector or not, but it's a bit ... of a fringe technical discussion
<gonidelis[m]>
here's a bit: is invalidating a sentinel the same story
<gonidelis[m]>
?
<gonidelis[m]>
what if a sentinel is represented by a sentinel value?
<K-ballo>
"sentinel value" is not a thing
<K-ballo>
and sure, if you invalidate a sentinel then the sentinel will not be valid, same thing
<gonidelis[m]>
not again...
<gonidelis[m]>
cool
<K-ballo>
that's all invalidation means
<gonidelis[m]>
now the initial question was, when i call `some_view | views::filter`, since `filter` is invalidated, does eric take care of the copying the things in order for the fusion to work, or is it my job (as a user) to do that?
<gonidelis[m]>
filter's view is invalidated^^
<K-ballo>
I can't really make sense of that question
<K-ballo>
applying a a range adaptor to a view will create a new view, so now element copies are possible
<K-ballo>
so NO elem..
hkaiser has joined #ste||ar
<gonidelis[m]>
but it's not just any view
<gonidelis[m]>
K-ballo:
<gonidelis[m]>
it's an invalidated view
<K-ballo>
so it's just any view that has been invalidated?
<K-ballo>
the meaning of view is "does NOT own elements", so no view can own elements
<K-ballo>
I don't really understand what your initial question is going for, maybe try some code?
<diehlpk_work>
ms[m], I could not find the Google form, but here are all questions listed
<gonidelis[m]>
<K-ballo "so it's just any view that has b"> yes
<gonidelis[m]>
the docs say "It is best to recreate a view after any operation that may have mutated the underlying range". ahh ok... yeah this is not copying, this is adding a new ref
<gonidelis[m]>
cool
K-ballo has quit [Quit: K-ballo]
<gonidelis[m]>
hkaiser: yt?
K-ballo has joined #ste||ar
<hkaiser>
gonidelis[m]: sorry, have to leave now
<hkaiser>
gonidelis[m]: can we talk tomorrow at th eusual time?