Tag dispatch for enqueue/dequeue implementation
Summary: clang (>=3.6?) reports potential object slicing bug when MPMCQueue is used for polymorphic class as the queue item, e.g. as in P19814469. This can be false positive however, since the choice is based on the type trait already. This diff uses tag dispatch to selectively compile the overload that will be executed, therefore if there is no-throw move ctor supplied clang will not examine the simulated relocation code. This doesn't avoid object slicing bug however if the client insists to use MPMCQueue to hold base class while enqueue and dequeue with subclassed item. Test Plan: compile with --clang Reviewed By: tudorb@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D2029949 Signature: t1:2029949:1430264357:af479117adf90bc1915c071e7376a30aacb72f46
Showing
Please register or sign in to comment