folly::copy
authorYedidya Feldblum <yfeldblum@fb.com>
Thu, 29 Dec 2016 02:03:39 +0000 (18:03 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 29 Dec 2016 02:17:54 +0000 (18:17 -0800)
commitec5f59cf16844e37c3915f9df69099bba63062b1
treefaff16cc85ab717b9386e771d7c1a9c7f844794e
parent1c3b25b2e85f87c8097abd71301bbd285a16b21f
folly::copy

Summary:
[Folly] `folly::copy`.

Usable when you have a function with two overloads:

    class MyData;
    void something(MyData&&);
    void something(const MyData&);

Where the purpose is to make copies and moves explicit without having to spell out the full type names - in this case, for copies, to invoke copy constructors.

When the caller wants to pass a copy of an lvalue, the caller may:

    void foo() {
      MyData data;
      something(folly::copy(data)); // explicit copy
      something(std::move(data)); // explicit move
      something(data); // const& - neither move nor copy
    }

Reviewed By: markisaa, ericniebler

Differential Revision: D3462023

fbshipit-source-id: 6c777be288f2a7012c1b4b46dc988890b8662595
folly/Makefile.am
folly/Utility.h [new file with mode: 0644]
folly/test/Makefile.am
folly/test/UtilityTest.cpp [new file with mode: 0644]