Get *=default*ed default constructors
authorPraveen Kumar <cpp.fool@gmail.com>
Fri, 12 Jun 2015 21:44:21 +0000 (14:44 -0700)
committerSara Golemon <sgolemon@fb.com>
Fri, 12 Jun 2015 21:54:35 +0000 (14:54 -0700)
Summary: Defaulted (*=default*ed) default constructors are better
because they can be constexpr and/or noexcept when C++ Standard
thinks it is right to do so. And they remain user-declared rather
than user-provided. Regarding *=default*ed default constructor,
benifit is that the work might be done during compilation and we
might not need to worry about exception paths. And for destructors,
apart from that that =defaulted definition is in sync with defaulted
default constructor we might discover that in some cases "() {}" might
be ill-formed when "= default;" compiltion indicates so. If =defaulted
definition for destructor doesn't do any harm then why not go for it.

Closes #216

Reviewed By: @yfeldblum

Differential Revision: D2145322

Pulled By: @sgolemon

53 files changed:
folly/Arena.h
folly/AtomicHashArray.h
folly/AtomicHashMap.h
folly/ExceptionWrapper.h
folly/GroupVarint.h
folly/MPMCPipeline.h
folly/MemoryMapping.h
folly/Singleton.h
folly/SmallLocks.h
folly/SocketAddress.h
folly/Subprocess.h
folly/ThreadLocal.h
folly/dynamic.cpp
folly/experimental/JSONSchema.cpp
folly/experimental/StringKeyedUnorderedMap.h
folly/gen/Base-inl.h
folly/gen/Combine-inl.h
folly/gen/Core-inl.h
folly/gen/Parallel-inl.h
folly/gen/ParallelMap-inl.h
folly/io/async/AsyncSSLSocket.h
folly/io/async/AsyncServerSocket.h
folly/io/async/AsyncSocket.cpp
folly/io/async/AsyncSocket.h
folly/io/async/AsyncTransport.h
folly/io/async/AsyncUDPServerSocket.h
folly/io/async/AsyncUDPSocket.h
folly/io/async/DelayedDestruction.h
folly/io/async/EventBase.h
folly/io/async/Request.h
folly/io/async/SSLContext.h
folly/io/async/TimeoutManager.h
folly/small_vector.h
folly/wangle/acceptor/ConnectionCounter.h
folly/wangle/acceptor/ConnectionManager.h
folly/wangle/acceptor/LoadShedConfiguration.h
folly/wangle/acceptor/ManagedConnection.h
folly/wangle/bootstrap/ClientBootstrap.h
folly/wangle/bootstrap/ServerBootstrap-inl.h
folly/wangle/bootstrap/ServerBootstrap.h
folly/wangle/channel/Handler.h
folly/wangle/channel/HandlerContext-inl.h
folly/wangle/channel/HandlerContext.h
folly/wangle/channel/Pipeline.h
folly/wangle/concurrent/BlockingQueue.h
folly/wangle/concurrent/IOExecutor.h
folly/wangle/concurrent/ThreadFactory.h
folly/wangle/concurrent/ThreadPoolExecutor.h
folly/wangle/rx/Subscription.h
folly/wangle/service/Service.h
folly/wangle/ssl/SSLCacheProvider.h
folly/wangle/ssl/SSLContextConfig.h
folly/wangle/ssl/SSLContextManager.cpp

index f2af34e..5121e38 100644 (file)
@@ -148,8 +148,8 @@ class Arena {
     }
 
    private:
-    Block() { }
-    ~Block() { }
+    Block() = default;
+    ~Block() = default;
   } __attribute__((__aligned__));
   // This should be alignas(std::max_align_t) but neither alignas nor
   // max_align_t are supported by gcc 4.6.2.
index 87f8b06..bbb3cdd 100644 (file)
@@ -232,7 +232,7 @@ class AtomicHashArray : boost::noncopyable {
 
   struct SimpleRetT { size_t idx; bool success;
     SimpleRetT(size_t i, bool s) : idx(i), success(s) {}
-    SimpleRetT() {}
+    SimpleRetT() = default;
   };
 
   template <class T>
@@ -277,7 +277,7 @@ class AtomicHashArray : boost::noncopyable {
   AtomicHashArray(size_t capacity, KeyT emptyKey, KeyT lockedKey,
                   KeyT erasedKey, double maxLoadFactor, size_t cacheSize);
 
-  ~AtomicHashArray() {}
+  ~AtomicHashArray() = default;
 
   inline void unlockCell(value_type* const cell, KeyT newKey) {
     cellKeyPtr(*cell)->store(newKey, std::memory_order_release);
index f0b04a5..5b58fee 100644 (file)
@@ -389,7 +389,7 @@ class AtomicHashMap : boost::noncopyable {
 
   struct SimpleRetT { uint32_t i; size_t j; bool success;
     SimpleRetT(uint32_t ii, size_t jj, bool s) : i(ii), j(jj), success(s) {}
-    SimpleRetT() {}
+    SimpleRetT() = default;
   };
 
   template <class T>
index 3f9f968..a99e84d 100644 (file)
@@ -434,7 +434,7 @@ class try_and_catch<LastException, Exceptions...> :
 template<>
 class try_and_catch<> : public exception_wrapper {
  public:
-  try_and_catch() {}
+  try_and_catch() = default;
 
  protected:
   template <typename F>
index d7ebd0d..f50617c 100644 (file)
@@ -512,7 +512,7 @@ class GroupVarintDecoder {
   typedef GroupVarint<T> Base;
   typedef T type;
 
-  GroupVarintDecoder() { }
+  GroupVarintDecoder() = default;
 
   explicit GroupVarintDecoder(StringPiece data,
                               size_t maxCount = (size_t)-1)
index dc42244..d480c16 100644 (file)
@@ -176,7 +176,7 @@ template <class In, class... Stages> class MPMCPipeline {
    * Default-construct pipeline. Useful to move-assign later,
    * just like MPMCQueue, see MPMCQueue.h for more details.
    */
-  MPMCPipeline() { }
+  MPMCPipeline() = default;
 
   /**
    * Construct a pipeline with N+1 queue sizes.
index a1ca744..280a261 100644 (file)
@@ -53,7 +53,7 @@ class MemoryMapping : boost::noncopyable {
    * likely become inaccessible) when the MemoryMapping object is destroyed.
    */
   struct Options {
-    Options() { }
+    Options() {}
 
     // Convenience methods; return *this for chaining.
     Options& setPageSize(off_t v) { pageSize = v; return *this; }
index 8eff26f..88eed34 100644 (file)
@@ -188,7 +188,7 @@ class TypeDescriptorHasher {
 // SingletonHolders.
 class SingletonHolderBase {
  public:
-  virtual ~SingletonHolderBase() {}
+  virtual ~SingletonHolderBase() = default;
 
   virtual TypeDescriptor type() = 0;
   virtual bool hasLiveInstance() = 0;
index 3702afe..6e7d68d 100644 (file)
@@ -295,7 +295,7 @@ struct SpinLockArray {
 
  private:
   struct PaddedSpinLock {
-    PaddedSpinLock() : lock() { }
+    PaddedSpinLock() : lock() {}
     T lock;
     char padding[FOLLY_CACHE_LINE_SIZE - sizeof(T)];
   };
index 7915c96..049cf2f 100644 (file)
@@ -32,7 +32,7 @@ namespace folly {
 
 class SocketAddress {
  public:
-  SocketAddress() {}
+  SocketAddress() = default;
 
   /**
    * Construct a SocketAddress from a hostname and port.
index b1f6707..b7c377e 100644 (file)
@@ -208,7 +208,7 @@ class SubprocessError : public std::exception {};
 class CalledProcessError : public SubprocessError {
  public:
   explicit CalledProcessError(ProcessReturnCode rc);
-  ~CalledProcessError() throw() { }
+  ~CalledProcessError() throw() = default;
   const char* what() const throw() FOLLY_OVERRIDE { return what_.c_str(); }
   ProcessReturnCode returnCode() const { return returnCode_; }
  private:
@@ -222,7 +222,7 @@ class CalledProcessError : public SubprocessError {
 class SubprocessSpawnError : public SubprocessError {
  public:
   SubprocessSpawnError(const char* executable, int errCode, int errnoValue);
-  ~SubprocessSpawnError() throw() {}
+  ~SubprocessSpawnError() throw() = default;
   const char* what() const throw() FOLLY_OVERRIDE { return what_.c_str(); }
   int errnoValue() const { return errnoValue_; }
 
index d3215f0..fee6fac 100644 (file)
@@ -59,7 +59,7 @@ template<class T, class Tag> class ThreadLocalPtr;
 template<class T, class Tag=void>
 class ThreadLocal {
  public:
-  ThreadLocal() { }
+  ThreadLocal() = default;
 
   T* get() const {
     T* ptr = tlp_.get();
index abb57ad..26d1751 100644 (file)
@@ -52,7 +52,7 @@ TypeError::TypeError(const std::string& expected,
       '\''))
 {}
 
-TypeError::~TypeError() {}
+TypeError::~TypeError() = default;
 
 // This is a higher-order preprocessor macro to aid going from runtime
 // types to the compile time type system.
index 51a6d20..9283ee3 100644 (file)
@@ -59,7 +59,7 @@ Optional<SchemaError> makeError(Args&&... args) {
 struct ValidationContext;
 
 struct IValidator {
-  virtual ~IValidator() {}
+  virtual ~IValidator() = default;
 
  private:
   friend struct ValidationContext;
@@ -102,7 +102,7 @@ struct SchemaValidatorContext final {
  * Root validator for a schema.
  */
 struct SchemaValidator final : IValidator, public Validator {
-  SchemaValidator() {}
+  SchemaValidator() = default;
   void loadSchema(SchemaValidatorContext& context, const dynamic& schema);
 
   Optional<SchemaError> validate(ValidationContext&,
@@ -1010,7 +1010,7 @@ folly::Singleton<Validator> schemaValidator([]() {
 });
 }
 
-Validator::~Validator() {}
+Validator::~Validator() = default;
 
 std::unique_ptr<Validator> makeValidator(const dynamic& schema) {
   auto v = make_unique<SchemaValidator>();
index 395bc82..28da8e9 100644 (file)
@@ -59,7 +59,7 @@ public:
   typedef typename Base::size_type size_type;
   typedef typename Base::difference_type difference_type;
 
-  explicit StringKeyedUnorderedMap() {}
+  explicit StringKeyedUnorderedMap() = default;
 
   explicit StringKeyedUnorderedMap(
     size_type n,
index e66d231..43dde36 100644 (file)
@@ -158,7 +158,7 @@ class RangeSource : public GenImpl<typename Range<Iterator>::reference,
                                    RangeSource<Iterator>> {
   Range<Iterator> range_;
  public:
-  RangeSource() {}
+  RangeSource() = default;
   explicit RangeSource(Range<Iterator> range)
     : range_(std::move(range))
   {}
@@ -382,7 +382,7 @@ template<class Predicate>
 class Map : public Operator<Map<Predicate>> {
   Predicate pred_;
  public:
-  Map() {}
+  Map() = default;
 
   explicit Map(Predicate pred)
     : pred_(std::move(pred))
@@ -448,7 +448,7 @@ template<class Predicate>
 class Filter : public Operator<Filter<Predicate>> {
   Predicate pred_;
  public:
-  Filter() {}
+  Filter() = default;
   explicit Filter(Predicate pred)
     : pred_(std::move(pred))
   { }
@@ -512,7 +512,7 @@ template<class Predicate>
 class Until : public Operator<Until<Predicate>> {
   Predicate pred_;
  public:
-  Until() {}
+  Until() = default;
   explicit Until(Predicate pred)
     : pred_(std::move(pred))
   {}
@@ -850,7 +850,7 @@ class Order : public Operator<Order<Selector, Comparer>> {
   Selector selector_;
   Comparer comparer_;
  public:
-  Order() {}
+  Order() = default;
 
   explicit Order(Selector selector)
     : selector_(std::move(selector))
@@ -984,7 +984,7 @@ template<class Selector>
 class Distinct : public Operator<Distinct<Selector>> {
   Selector selector_;
  public:
-  Distinct() {}
+  Distinct() = default;
 
   explicit Distinct(Selector selector)
     : selector_(std::move(selector))
@@ -1165,7 +1165,7 @@ class FoldLeft : public Operator<FoldLeft<Seed, Fold>> {
   Seed seed_;
   Fold fold_;
  public:
-  FoldLeft() {}
+  FoldLeft() = default;
   FoldLeft(Seed seed,
            Fold fold)
     : seed_(std::move(seed))
@@ -1193,7 +1193,7 @@ class FoldLeft : public Operator<FoldLeft<Seed, Fold>> {
  */
 class First : public Operator<First> {
  public:
-  First() { }
+  First() = default;
 
   template<class Source,
            class Value,
@@ -1226,7 +1226,7 @@ class First : public Operator<First> {
  */
 class Any : public Operator<Any> {
  public:
-  Any() { }
+  Any() = default;
 
   template<class Source,
            class Value>
@@ -1265,7 +1265,7 @@ template<class Predicate>
 class All : public Operator<All<Predicate>> {
   Predicate pred_;
  public:
-  All() {}
+  All() = default;
   explicit All(Predicate pred)
     : pred_(std::move(pred))
   { }
@@ -1302,7 +1302,7 @@ template<class Reducer>
 class Reduce : public Operator<Reduce<Reducer>> {
   Reducer reducer_;
  public:
-  Reduce() {}
+  Reduce() = default;
   explicit Reduce(Reducer reducer)
     : reducer_(std::move(reducer))
   {}
@@ -1335,7 +1335,7 @@ class Reduce : public Operator<Reduce<Reducer>> {
  */
 class Count : public Operator<Count> {
  public:
-  Count() { }
+  Count() = default;
 
   template<class Source,
            class Value>
@@ -1418,7 +1418,7 @@ class Min : public Operator<Min<Selector, Comparer>> {
   Selector selector_;
   Comparer comparer_;
  public:
-  Min() {}
+  Min() = default;
 
   explicit Min(Selector selector)
     : selector_(std::move(selector))
@@ -1494,7 +1494,7 @@ class Append : public Operator<Append<Collection>> {
 template<class Collection>
 class Collect : public Operator<Collect<Collection>> {
  public:
-  Collect() { }
+  Collect() = default;
 
   template<class Value,
            class Source,
@@ -1528,7 +1528,7 @@ template<template<class, class> class Container,
          template<class> class Allocator>
 class CollectTemplate : public Operator<CollectTemplate<Container, Allocator>> {
  public:
-  CollectTemplate() { }
+  CollectTemplate() = default;
 
   template<class Value,
            class Source,
@@ -1561,7 +1561,7 @@ class CollectTemplate : public Operator<CollectTemplate<Container, Allocator>> {
  */
 class Concat : public Operator<Concat> {
  public:
-  Concat() { }
+  Concat() = default;
 
   template<class Inner,
            class Source,
@@ -1619,7 +1619,7 @@ class Concat : public Operator<Concat> {
  */
 class RangeConcat : public Operator<RangeConcat> {
  public:
-  RangeConcat() { }
+  RangeConcat() = default;
 
   template<class Range,
            class Source,
@@ -1824,7 +1824,7 @@ class Cycle : public Operator<Cycle> {
  */
 class Dereference : public Operator<Dereference> {
  public:
-  Dereference() {}
+  Dereference() = default;
 
   template<class Value,
            class Source,
@@ -1883,7 +1883,7 @@ class Dereference : public Operator<Dereference> {
  */
 class Indirect : public Operator<Indirect> {
  public:
-  Indirect() {}
+  Indirect() = default;
 
   template <class Value,
             class Source,
@@ -1997,11 +1997,11 @@ class VirtualGen : public GenImpl<Value, VirtualGen<Value>> {
  * non-template operators, statically defined to avoid the need for anything but
  * the header.
  */
-static const detail::Sum sum;
+static const detail::Sum sum{};
 
-static const detail::Count count;
+static const detail::Count count{};
 
-static const detail::First first;
+static const detail::First first{};
 
 /**
  * Use directly for detecting any values, or as a function to detect values
@@ -2010,21 +2010,21 @@ static const detail::First first;
  *  auto nonempty = g | any;
  *  auto evens = g | any(even);
  */
-static const detail::Any any;
+static const detail::Any any{};
 
-static const detail::Min<Identity, Less> min;
+static const detail::Min<Identity, Less> min{};
 
-static const detail::Min<Identity, Greater> max;
+static const detail::Min<Identity, Greater> max{};
 
-static const detail::Order<Identity> order;
+static const detail::Order<Identity> order{};
 
-static const detail::Distinct<Identity> distinct;
+static const detail::Distinct<Identity> distinct{};
 
-static const detail::Map<Move> move;
+static const detail::Map<Move> move{};
 
-static const detail::Concat concat;
+static const detail::Concat concat{};
 
-static const detail::RangeConcat rconcat;
+static const detail::RangeConcat rconcat{};
 
 /**
  * Use directly for infinite sequences, or as a function to limit cycle count.
@@ -2032,11 +2032,11 @@ static const detail::RangeConcat rconcat;
  *  auto forever = g | cycle;
  *  auto thrice = g | cycle(3);
  */
-static const detail::Cycle cycle;
+static const detail::Cycle cycle{};
 
-static const detail::Dereference dereference;
+static const detail::Dereference dereference{};
 
-static const detail::Indirect indirect;
+static const detail::Indirect indirect{};
 
 inline detail::Take take(size_t count) {
   return detail::Take(count);
index 06c8c20..b36c8c7 100644 (file)
@@ -203,7 +203,7 @@ class MergeTuples {
 
 }  // namespace detail
 
-static const detail::Map<detail::MergeTuples> tuple_flatten;
+static const detail::Map<detail::MergeTuples> tuple_flatten{};
 
 // TODO(mcurtiss): support zip() for N>1 operands. Because of variadic problems,
 // this might not be easily possible until gcc4.8 is available.
index 6916dca..33aff6b 100644 (file)
@@ -304,7 +304,7 @@ class Composed : public Operator<Composed<First, Second>> {
   First first_;
   Second second_;
  public:
-  Composed() {}
+  Composed() = default;
 
   Composed(First first, Second second)
     : first_(std::move(first))
index 50adb5b..ca4a717 100644 (file)
@@ -385,7 +385,7 @@ class ChunkedRangeSource
   Range<Iterator> range_;
 
  public:
-  ChunkedRangeSource() {}
+  ChunkedRangeSource() = default;
   ChunkedRangeSource(int chunkSize, Range<Iterator> range)
       : chunkSize_(chunkSize), range_(std::move(range)) {}
 
index 08ca3f5..b409839 100644 (file)
@@ -45,7 +45,7 @@ class PMap : public Operator<PMap<Predicate>> {
   Predicate pred_;
   size_t nThreads_;
  public:
-  PMap() {}
+  PMap() = default;
 
   PMap(Predicate pred, size_t nThreads)
     : pred_(std::move(pred)),
index 0cc0dc9..8523bdb 100644 (file)
@@ -83,7 +83,7 @@ class AsyncSSLSocket : public virtual AsyncSocket {
 
   class HandshakeCB {
    public:
-    virtual ~HandshakeCB() {}
+    virtual ~HandshakeCB() = default;
 
     /**
      * handshakeVer() is invoked during handshaking to give the
index ff9562f..26662fc 100644 (file)
@@ -66,7 +66,7 @@ class AsyncServerSocket : public DelayedDestruction
 
   class AcceptCallback {
    public:
-    virtual ~AcceptCallback() {}
+    virtual ~AcceptCallback() = default;
 
     /**
      * connectionAccepted() is called whenever a new client connection is
@@ -614,7 +614,7 @@ class AsyncServerSocket : public DelayedDestruction
     explicit RemoteAcceptor(AcceptCallback *callback)
       : callback_(callback) {}
 
-    ~RemoteAcceptor() {}
+    ~RemoteAcceptor() = default;
 
     void start(EventBase *eventBase, uint32_t maxAtOnce, uint32_t maxInQueue);
     void stop(EventBase* eventBase, AcceptCallback* callback);
index 5436daa..3ff2b34 100644 (file)
@@ -148,7 +148,7 @@ class AsyncSocket::BytesWriteRequest : public AsyncSocket::WriteRequest {
   }
 
   // private destructor, to ensure callers use destroy()
-  virtual ~BytesWriteRequest() {}
+  virtual ~BytesWriteRequest() = default;
 
   const struct iovec* getOps() const {
     assert(opCount_ > opIndex_);
index 523093b..5ea024c 100644 (file)
@@ -67,7 +67,7 @@ class AsyncSocket : virtual public AsyncTransportWrapper {
 
   class ConnectCallback {
    public:
-    virtual ~ConnectCallback() {}
+    virtual ~ConnectCallback() = default;
 
     /**
      * connectSuccess() will be invoked when the connection has been
index 1cf4d20..a166db5 100644 (file)
@@ -318,7 +318,7 @@ class AsyncTransport : public DelayedDestruction, public AsyncSocketBase {
   virtual size_t getRawBytesReceived() const = 0;
 
  protected:
-  virtual ~AsyncTransport() {}
+  virtual ~AsyncTransport() = default;
 };
 
 // Transitional intermediate interface. This is deprecated.
@@ -329,7 +329,7 @@ class AsyncTransportWrapper : virtual public AsyncTransport {
 
   class ReadCallback {
    public:
-    virtual ~ReadCallback() {}
+    virtual ~ReadCallback() = default;
 
     /**
      * When data becomes available, getReadBuffer() will be invoked to get the
@@ -400,7 +400,7 @@ class AsyncTransportWrapper : virtual public AsyncTransport {
 
   class WriteCallback {
    public:
-    virtual ~WriteCallback() {}
+    virtual ~WriteCallback() = default;
 
     /**
      * writeSuccess() will be invoked when all of the data has been
index 1a5201b..0476abe 100644 (file)
@@ -62,7 +62,7 @@ class AsyncUDPServerSocket : private AsyncUDPSocket::ReadCallback
       std::unique_ptr<folly::IOBuf> buf,
       bool truncated) noexcept = 0;
 
-    virtual ~Callback() {}
+    virtual ~Callback() = default;
   };
 
   /**
index 02f9008..35d8373 100644 (file)
@@ -74,7 +74,7 @@ class AsyncUDPSocket : public EventHandler {
      */
     virtual void onReadClosed() noexcept = 0;
 
-    virtual ~ReadCallback() {}
+    virtual ~ReadCallback() = default;
   };
 
   /**
index 639c853..bda26f7 100644 (file)
@@ -143,7 +143,7 @@ class DelayedDestruction : private boost::noncopyable {
    * shared_ptr using a DelayedDestruction::Destructor as the second argument
    * to the shared_ptr constructor.
    */
-  virtual ~DelayedDestruction() {}
+  virtual ~DelayedDestruction() = default;
 
   /**
    * Get the number of DestructorGuards currently protecting this object.
index 9077b06..369754b 100644 (file)
@@ -46,7 +46,7 @@ class NotificationQueue;
 
 class EventBaseObserver {
  public:
-  virtual ~EventBaseObserver() {}
+  virtual ~EventBaseObserver() = default;
 
   virtual uint32_t getSampleRate() const = 0;
 
@@ -114,7 +114,7 @@ class EventBase : private boost::noncopyable,
    */
   class LoopCallback {
    public:
-    virtual ~LoopCallback() {}
+    virtual ~LoopCallback() = default;
 
     virtual void runLoopCallback() noexcept = 0;
     void cancelLoopCallback() {
index 490c69b..a7c7bef 100644 (file)
@@ -33,7 +33,7 @@ namespace folly {
 
 class RequestData {
  public:
-  virtual ~RequestData() {}
+  virtual ~RequestData() = default;
 };
 
 class RequestContext;
index 20df0c8..1b5592b 100644 (file)
@@ -42,7 +42,7 @@ namespace folly {
  */
 class PasswordCollector {
  public:
-  virtual ~PasswordCollector() {}
+  virtual ~PasswordCollector() = default;
   /**
    * Interface for customizing how to collect private key password.
    *
index 2b35574..5c068db 100644 (file)
@@ -41,7 +41,7 @@ class TimeoutManager {
     NORMAL
   };
 
-  virtual ~TimeoutManager() {}
+  virtual ~TimeoutManager() = default;
 
   /**
    * Attaches/detaches TimeoutManager to AsyncTimeout
index 2f2d46c..a4af2fc 100644 (file)
@@ -382,7 +382,7 @@ public:
   typedef std::reverse_iterator<iterator>       reverse_iterator;
   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
 
-  explicit small_vector() {}
+  explicit small_vector() = default;
 
   small_vector(small_vector const& o) {
     auto n = o.size();
index 3aaba64..3d97be1 100644 (file)
@@ -31,7 +31,7 @@ class IConnectionCounter {
    * Decrement the count of client-side connections.
    */
   virtual void onConnectionRemoved() = 0;
-  virtual ~IConnectionCounter() {}
+  virtual ~IConnectionCounter() = default;
 };
 
 class SimpleConnectionCounter: public IConnectionCounter {
@@ -44,7 +44,7 @@ class SimpleConnectionCounter: public IConnectionCounter {
 
   void onConnectionAdded() override { numConnections_++; }
   void onConnectionRemoved() override { numConnections_--; }
-  virtual ~SimpleConnectionCounter() {}
+  virtual ~SimpleConnectionCounter() = default;
 
  protected:
   uint64_t maxConnections_{0};
index 45400a6..8a0327f 100644 (file)
@@ -40,7 +40,7 @@ class ConnectionManager: public folly::DelayedDestruction,
    */
   class Callback {
   public:
-    virtual ~Callback() {}
+    virtual ~Callback() = default;
 
     /**
      * Invoked when the number of connections managed by the
@@ -189,7 +189,7 @@ class ConnectionManager: public folly::DelayedDestruction,
     DRAIN2 = 1,
   };
 
-  ~ConnectionManager() {}
+  ~ConnectionManager() = default;
 
   ConnectionManager(const ConnectionManager&) = delete;
   ConnectionManager& operator=(ConnectionManager&) = delete;
index 57c51b9..a3f1907 100644 (file)
@@ -39,9 +39,9 @@ class LoadShedConfiguration {
   typedef std::set<SocketAddress, AddressOnlyCompare> AddressSet;
   typedef std::set<NetworkAddress> NetworkSet;
 
-  LoadShedConfiguration() {}
+  LoadShedConfiguration() = default;
 
-  ~LoadShedConfiguration() {}
+  ~LoadShedConfiguration() = default;
 
   void addWhitelistAddr(folly::StringPiece);
 
index abee324..7732b7b 100644 (file)
@@ -38,7 +38,7 @@ class ManagedConnection:
 
   class Callback {
   public:
-    virtual ~Callback() {}
+    virtual ~Callback() = default;
 
     /* Invoked when this connection becomes busy */
     virtual void onActivated(ManagedConnection& conn) = 0;
index ecd0c3b..d2f1a16 100644 (file)
@@ -94,7 +94,7 @@ class ClientBootstrap {
     return pipeline_.get();
   }
 
-  virtual ~ClientBootstrap() {}
+  virtual ~ClientBootstrap() = default;
 
  protected:
   std::unique_ptr<Pipeline,
index 4b56de8..45eb8a0 100644 (file)
@@ -40,7 +40,7 @@ class ServerAcceptor
       pipeline_->setPipelineManager(this);
     }
 
-    ~ServerConnection() {}
+    ~ServerConnection() = default;
 
     void timeoutExpired() noexcept override {
     }
index 4940e67..3b7f6b0 100644 (file)
@@ -45,7 +45,7 @@ class ServerBootstrap {
   ServerBootstrap(const ServerBootstrap& that) = delete;
   ServerBootstrap(ServerBootstrap&& that) = default;
 
-  ServerBootstrap() {}
+  ServerBootstrap() = default;
 
   ~ServerBootstrap() {
     stop();
index 2080c2c..4228ca4 100644 (file)
@@ -26,7 +26,7 @@ namespace folly { namespace wangle {
 template <class Context>
 class HandlerBase {
  public:
-  virtual ~HandlerBase() {}
+  virtual ~HandlerBase() = default;
 
   virtual void attachPipeline(Context* ctx) {}
   virtual void detachPipeline(Context* ctx) {}
@@ -55,7 +55,7 @@ class Handler : public HandlerBase<HandlerContext<Rout, Wout>> {
   typedef Win win;
   typedef Wout wout;
   typedef HandlerContext<Rout, Wout> Context;
-  virtual ~Handler() {}
+  virtual ~Handler() = default;
 
   virtual void read(Context* ctx, Rin msg) = 0;
   virtual void readEOF(Context* ctx) {
@@ -112,7 +112,7 @@ class InboundHandler : public HandlerBase<InboundHandlerContext<Rout>> {
   typedef Nothing win;
   typedef Nothing wout;
   typedef InboundHandlerContext<Rout> Context;
-  virtual ~InboundHandler() {}
+  virtual ~InboundHandler() = default;
 
   virtual void read(Context* ctx, Rin msg) = 0;
   virtual void readEOF(Context* ctx) {
@@ -139,7 +139,7 @@ class OutboundHandler : public HandlerBase<OutboundHandlerContext<Wout>> {
   typedef Win win;
   typedef Wout wout;
   typedef OutboundHandlerContext<Wout> Context;
-  virtual ~OutboundHandler() {}
+  virtual ~OutboundHandler() = default;
 
   virtual Future<void> write(Context* ctx, Win msg) = 0;
   virtual Future<void> close(Context* ctx) {
index 9a220bc..5f12f99 100644 (file)
@@ -20,7 +20,7 @@ namespace folly { namespace wangle {
 
 class PipelineContext {
  public:
-  virtual ~PipelineContext() {}
+  virtual ~PipelineContext() = default;
 
   virtual void attachPipeline() = 0;
   virtual void detachPipeline() = 0;
@@ -41,7 +41,7 @@ class PipelineContext {
 template <class In>
 class InboundLink {
  public:
-  virtual ~InboundLink() {}
+  virtual ~InboundLink() = default;
   virtual void read(In msg) = 0;
   virtual void readEOF() = 0;
   virtual void readException(exception_wrapper e) = 0;
@@ -52,7 +52,7 @@ class InboundLink {
 template <class Out>
 class OutboundLink {
  public:
-  virtual ~OutboundLink() {}
+  virtual ~OutboundLink() = default;
   virtual Future<void> write(Out msg) = 0;
   virtual Future<void> close() = 0;
 };
@@ -60,7 +60,7 @@ class OutboundLink {
 template <class P, class H, class Context>
 class ContextImplBase : public PipelineContext {
  public:
-  ~ContextImplBase() {}
+  ~ContextImplBase() = default;
 
   H* getHandler() {
     return handler_.get();
@@ -140,7 +140,7 @@ class ContextImpl
     this->impl_ = this;
   }
 
-  ~ContextImpl() {}
+  ~ContextImpl() = default;
 
   // HandlerContext overrides
   void fireRead(Rout msg) override {
@@ -289,7 +289,7 @@ class InboundContextImpl
     this->impl_ = this;
   }
 
-  ~InboundContextImpl() {}
+  ~InboundContextImpl() = default;
 
   // InboundHandlerContext overrides
   void fireRead(Rout msg) override {
@@ -389,7 +389,7 @@ class OutboundContextImpl
     this->impl_ = this;
   }
 
-  ~OutboundContextImpl() {}
+  ~OutboundContextImpl() = default;
 
   // OutboundHandlerContext overrides
   Future<void> fireWrite(Wout msg) override {
index ddd9a57..69a37f4 100644 (file)
@@ -27,7 +27,7 @@ class PipelineBase;
 template <class In, class Out>
 class HandlerContext {
  public:
-  virtual ~HandlerContext() {}
+  virtual ~HandlerContext() = default;
 
   virtual void fireRead(In msg) = 0;
   virtual void fireReadEOF() = 0;
@@ -65,7 +65,7 @@ class HandlerContext {
 template <class In>
 class InboundHandlerContext {
  public:
-  virtual ~InboundHandlerContext() {}
+  virtual ~InboundHandlerContext() = default;
 
   virtual void fireRead(In msg) = 0;
   virtual void fireReadEOF() = 0;
@@ -86,7 +86,7 @@ class InboundHandlerContext {
 template <class Out>
 class OutboundHandlerContext {
  public:
-  virtual ~OutboundHandlerContext() {}
+  virtual ~OutboundHandlerContext() = default;
 
   virtual Future<void> fireWrite(Out msg) = 0;
   virtual Future<void> fireClose() = 0;
index 47c719c..174c5d9 100644 (file)
@@ -27,13 +27,13 @@ namespace folly { namespace wangle {
 
 class PipelineManager {
  public:
-  virtual ~PipelineManager() {}
+  virtual ~PipelineManager() = default;
   virtual void deletePipeline(PipelineBase* pipeline) = 0;
 };
 
 class PipelineBase : public DelayedDestruction {
  public:
-  virtual ~PipelineBase() {}
+  virtual ~PipelineBase() = default;
 
   void setPipelineManager(PipelineManager* manager) {
     manager_ = manager;
@@ -174,7 +174,7 @@ class PipelineFactory {
   virtual std::unique_ptr<Pipeline, folly::DelayedDestruction::Destructor>
   newPipeline(std::shared_ptr<AsyncSocket>) = 0;
 
-  virtual ~PipelineFactory() {}
+  virtual ~PipelineFactory() = default;
 };
 
 }
index 72c7aa3..16677fa 100644 (file)
@@ -23,7 +23,7 @@ namespace folly { namespace wangle {
 template <class T>
 class BlockingQueue {
  public:
-  virtual ~BlockingQueue() {}
+  virtual ~BlockingQueue() = default;
   virtual void add(T item) = 0;
   virtual void addWithPriority(T item, int8_t priority) {
     add(std::move(item));
index 08ed94d..14d9a64 100644 (file)
@@ -40,7 +40,7 @@ namespace folly { namespace wangle {
 // IOThreadPoolExecutor will be created and returned.
 class IOExecutor : public virtual Executor {
  public:
-  virtual ~IOExecutor() {}
+  virtual ~IOExecutor() = default;
   virtual EventBase* getEventBase() = 0;
 };
 
index effd7e0..95446f1 100644 (file)
@@ -23,7 +23,7 @@ namespace folly { namespace wangle {
 
 class ThreadFactory {
  public:
-  virtual ~ThreadFactory() {}
+  virtual ~ThreadFactory() = default;
   virtual std::thread newThread(Func&& func) = 0;
 };
 
index c8ca7bb..bb77d39 100644 (file)
@@ -129,7 +129,7 @@ class ThreadPoolExecutor : public virtual Executor {
         idle(true),
         taskStatsSubject(pool->taskStatsSubject_) {}
 
-    virtual ~Thread() {}
+    virtual ~Thread() = default;
 
     static std::atomic<uint64_t> nextId;
     uint64_t id;
index 8445ccf..09af8c9 100644 (file)
@@ -24,7 +24,7 @@ namespace folly { namespace wangle {
 template <class T>
 class Subscription {
  public:
-  Subscription() {}
+  Subscription() = default;
 
   Subscription(const Subscription&) = delete;
 
index 7eb5424..7874e19 100644 (file)
@@ -33,7 +33,7 @@ template <typename Req, typename Resp = Req>
 class Service {
  public:
   virtual Future<Resp> operator()(Req request) = 0;
-  virtual ~Service() {}
+  virtual ~Service() = default;
   virtual Future<void> close() {
     return makeFuture();
   }
@@ -67,7 +67,7 @@ class ServiceFilter : public Service<ReqA, RespA> {
   public:
   explicit ServiceFilter(std::shared_ptr<Service<ReqB, RespB>> service)
       : service_(service) {}
-  virtual ~ServiceFilter() {}
+  virtual ~ServiceFilter() = default;
 
   virtual Future<void> close() override {
     return service_->close();
@@ -132,7 +132,7 @@ class FactoryToService : public Service<Req, Resp> {
   explicit FactoryToService(
     std::shared_ptr<ServiceFactory<Pipeline, Req, Resp>> factory)
       : factory_(factory) {}
-  virtual ~FactoryToService() {}
+  virtual ~FactoryToService() = default;
 
   virtual Future<Resp> operator()(Req request) override {
     DCHECK(factory_);
index 8817b14..e59b4c1 100644 (file)
@@ -33,7 +33,7 @@ public:
       folly::DelayedDestruction::DestructorGuard> guard;
   } CacheContext;
 
-  virtual ~SSLCacheProvider() {}
+  virtual ~SSLCacheProvider() = default;
 
   /**
    * Store a session in the external cache.
index 47aa3f1..6bd938b 100644 (file)
@@ -27,8 +27,8 @@
 namespace folly {
 
 struct SSLContextConfig {
-  SSLContextConfig() {}
-  ~SSLContextConfig() {}
+  SSLContextConfig() = default;
+  ~SSLContextConfig() = default;
 
   struct CertificateInfo {
     CertificateInfo(const std::string& crtPath,
index 101dde7..095e13c 100644 (file)
@@ -144,7 +144,7 @@ std::string flattenList(const std::list<std::string>& list) {
 
 }
 
-SSLContextManager::~SSLContextManager() {}
+SSLContextManager::~SSLContextManager() = default;
 
 SSLContextManager::SSLContextManager(
   EventBase* eventBase,