Disable scoped_refptr operator T* on Linux builds.
commit664a17fefa8bc4b50763765281039afaf0db7b0d
authorDaniel Cheng <dcheng@chromium.org>
Fri, 5 Sep 2014 07:16:45 +0000 (5 00:16 -0700)
committerDaniel Cheng <dcheng@chromium.org>
Fri, 5 Sep 2014 07:19:11 +0000 (5 07:19 +0000)
treeac729a95fa90cb5b5a0c70ba6407569eaf512e8e
parent99adf749397997bbb0a36cde6f48aba9c25bc4d5
Disable scoped_refptr operator T* on Linux builds.

The implicit conversion operator is being removed, because of the
surprises it can cause. For example, one might write:
  scoped_refptr<Foo> CreateFoo();
to ensure that callers hold the result in a scoped_refptr. But the
implicit conversion to T* means that a caller can accidentally hold
the result in a Foo* and the compiler won't catch it.

Since there are a large number of dependencies on this implicit
conversion, the cleanup is being conducted by a combination of
automated tooling and manual cleanup. It is also being staged on a
platform by platform basis. All known dependencies on the implicit
conversion on Linux (but not ChromeOS) have been removed, so this
patch disables the conversion operator on Linux builds to prevent
new dependencies on the implicit conversion.

Finally, to help facilitate this transition, temporary operator
overloads for comparison have been added. These will eventually be
removed.

BUG=110610
R=jyasskin@chromium.org, rsleevi@chromium.org, willchan@chromium.org

Review URL: https://codereview.chromium.org/510323002

Cr-Commit-Position: refs/heads/master@{#293459}
base/memory/ref_counted.h
base/memory/ref_counted_unittest.cc