Ban std::shared_ptr in style guide

As a sideswipe, note that sigslot is deprecated.

Bug: none
Change-Id: I8dab9035377fa4155c5f7a99a1f6a4345fcb1e17
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/215660
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33774}
diff --git a/style-guide.md b/style-guide.md
index 4a3143f..dd4fb52 100644
--- a/style-guide.md
+++ b/style-guide.md
@@ -124,42 +124,28 @@
 
 ### sigslot
 
-sigslot is a lightweight library that adds a signal/slot language
-construct to C++, making it easy to implement the observer pattern
-with minimal boilerplate code.
+SIGSLOT IS DEPRECATED.
 
-When adding a signal to a pure interface, **prefer to add a pure
-virtual method that returns a reference to a signal**:
+Prefer webrtc::CallbackList, and manage thread safety yourself.
 
-```
-sigslot::signal<int>& SignalFoo() = 0;
-```
+### Smart pointers
 
-As opposed to making it a public member variable, as a lot of legacy
-code does:
+The following smart pointer types are recommended:
 
-```
-sigslot::signal<int> SignalFoo;
-```
+   * std::unique_ptr for all singly-owned objects
+   * rtc::scoped_refptr for all objects with shared ownership
 
-The virtual method approach has the advantage that it keeps the
-interface stateless, and gives the subclass more flexibility in how it
-implements the signal. It may:
+Use of std::shared_ptr is *not permitted*. It is
+[banned](https://chromium-cpp.appspot.com/#library-blocklist) in the Chromium
+style guide (overriding the Google style guide), and offers no compelling
+advantage over rtc::scoped_refptr (which is cloned from the corresponding
+Chromium type).
 
-* Have its own signal as a member variable.
-* Use a `sigslot::repeater`, to repeat a signal of another object:
-
-  ```
-  sigslot::repeater<int> foo_;
-  /* ... */
-  foo_.repeat(bar_.SignalFoo());
-  ```
-* Just return another object's signal directly, if the other object's
-  lifetime is the same as its own.
-
-  ```
-  sigslot::signal<int>& SignalFoo() { return bar_.SignalFoo(); }
-  ```
+In most cases, one will want to explicitly control lifetimes, and therefore
+use std::unique_ptr, but in some cases, for instance  where references have
+to exist both from the API users and internally, with no way to
+invalidate pointers held by the API user, rtc::scoped_refptr can be
+appropriate.
 
 ### std::bind