I met ~70 similar repeated warnings when compiling a C++ CUDA extension with Pytorch 1.9.1 in Windows using VC 2019. The message is:
c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=at::Tensor
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=at::Generator
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=c10::impl::InlineDeviceGuard<c10::impl::VirtualGuardImpl>
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=std::basic_string<char,std::char_traits<char>,std::allocator<char>>
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=std::vector<c10::ShapeSymbol,std::allocator<c10::ShapeSymbol>>
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=std::vector<c10::optional<c10::Stride>,std::allocator<c10::optional<c10::Stride>>>
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=c10::QualifiedName
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=c10::impl::VirtualGuardImpl
        ]

c10/util/Optional.h(183): warning C4624: 'c10::constexpr_storage_t<T>': destructor was implicitly defined as deleted
        with
        [
            T=c10::OperatorName
        ]

c10/util/Optional.h(395): warning C4624: 'c10::trivially_copyable_optimization_optional_base<T>': destructor was implicitly defined as deleted
        with
        [
            T=at::Tensor
        ]

Then I look into the source file, the related lines are:
template <class T>
union constexpr_storage_t {
  unsigned char dummy_;
  T value_;

  constexpr constexpr_storage_t(trivial_init_t) noexcept : dummy_(){};

  template <class... Args>
  constexpr constexpr_storage_t(Args&&... args)
      : value_(constexpr_forward<Args>(args)...) {}

  ~constexpr_storage_t() = default;
};

and
template <class T>
struct trivially_copyable_optimization_optional_base {
  bool init_;
  constexpr_storage_t<T> storage_;

  constexpr trivially_copyable_optimization_optional_base() noexcept
      : init_(false), storage_(trivial_init) {}

  explicit constexpr trivially_copyable_optimization_optional_base(const T& v)
      : init_(true), storage_(v) {}

  explicit constexpr trivially_copyable_optimization_optional_base(T&& v)
      : init_(true), storage_(constexpr_move(v)) {}

  template <class... Args>
  explicit constexpr trivially_copyable_optimization_optional_base(
      in_place_t,
      Args&&... args)
      : init_(true), storage_(constexpr_forward<Args>(args)...) {}

  template <
      class U,
      class... Args,
      TR2_OPTIONAL_REQUIRES(std::is_constructible<T, std::initializer_list<U>>)>
  constexpr explicit trivially_copyable_optimization_optional_base(
      in_place_t,
      std::initializer_list<U> il,
      Args&&... args)
      : init_(true), storage_(il, std::forward<Args>(args)...) {}

  ~trivially_copyable_optimization_optional_base() = default;
};