sk_sp: fix contravariant constructors

TBR=reed
This is obviously correct and needs to be fixed.

Review URL: https://codereview.chromium.org/1771583002
diff --git a/tests/RefCntTest.cpp b/tests/RefCntTest.cpp
index 60a34ec..8914ccf 100644
--- a/tests/RefCntTest.cpp
+++ b/tests/RefCntTest.cpp
@@ -274,3 +274,19 @@
     check(reporter, 1, 2, 1, 1);
 }
 
+namespace {
+struct FooAbstract : public SkRefCnt {
+    virtual void f() = 0;
+};
+struct FooConcrete : public FooAbstract {
+    void f() override {}
+};
+}
+static sk_sp<FooAbstract> make_foo() {
+    // can not cast FooConcrete to FooAbstract.
+    // can cast FooConcrete* to FooAbstract*.
+    return sk_make_sp<FooConcrete>();
+}
+DEF_TEST(sk_make_sp, r) {
+    auto x = make_foo();
+}