1 // Copyright 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "callback.h"
6
Test()7 void Test() {
8 using base::BindOnce;
9 using base::Passed;
10 int i = 0;
11 int* p = nullptr;
12
13 // Passed takes a pointer and the address is taken here.
14 // Remove `&` and replace base::Passed with std::move.
15 base::BindOnce([] {}, std::move(i));
16
17 // Passed takes a pointer. Replace base::Passed with std::move plus deref.
18 base::BindOnce([] {}, std::move(*p));
19
20 // The parameter is already rvalue-reference. Just remove base::Passed.
21 // Plus, check if unqualified names work.
22 base::BindOnce([] {}, std::move(*p));
23 BindOnce([] {}, 1);
24 }
25