Check for self-assignment in move assignment
authorZejun Wu <watashi@fb.com>
Thu, 17 Jul 2014 16:49:39 +0000 (09:49 -0700)
committerTudor Bosman <tudorb@fb.com>
Mon, 21 Jul 2014 19:22:03 +0000 (12:22 -0700)
commitcb2dc2c8e4fefcc3dd38ed90e2aca02bc1e82e2c
treeac5b0512d8e9aef7dc2d43830bb012137e3027a9
parentb6a8eb2e3e7dae0c48cf1ace5299bc777b2753cd
Check for self-assignment in move assignment

Summary:
Check for self-assignment in move assignment. Otherwise
Optional<Neko> cat = whatever;
cat = std::move(cat);
cat.hasValue(); // always returns false

Test Plan: fbmake runtests

Reviewed By: tjackson@fb.com

FB internal diff: D1440633
folly/Optional.h
folly/test/OptionalTest.cpp