// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
template <typename>
class scoped_refptr {
public:
void* get() { return 0; }
};
namespace base {
template <typename Functor, typename... Args>
void Bind(Functor&&, Args&&...) {}
} // namespace base
struct Foo {
void Bar();
static void Baz();
};
void Test() {
using base::Bind;
scoped_refptr<int> foo;
base::Bind(&Foo::Bar, foo.get());
Bind(&Foo::Bar, foo.get());
base::Bind(&Foo::Bar, (&foo)->get());
base::Bind(&Foo::Bar, foo.get(
));
base::Bind(&Foo::Bar, foo
.get());
base::Bind(&Foo::Bar, foo.get(), foo.get());
base::Bind(&Foo::Baz, foo.get());
base::Bind(&Foo::Bar, foo.scoped_refptr<int>::get());
base::Bind(&Foo::Bar, (&foo)->scoped_refptr<int>::get());
}