   // MARK: - Euclidean structure.
 
   /// The inner product of `self` with `other`.
+  ///
+  /// Note: Depends on Euclidean vector space structure, and therefore would not be available on a
+  /// generalized vector.
   @differentiable
   func dot(_ other: Self) -> Double
 
   // MARK: - Methods for setting/accessing scalars.
 
   /// Creates an instance whose elements are `scalars`.
+  ///
+  /// Note: Depends on a determined standard basis, and therefore would not be available on a
+  /// generalized vector.
   ///
   /// Precondition: `scalars` must have an element count that `Self` can hold (e.g. if `Self` is a
   /// fixed-size vectors, then `scalars` must have exactly the right number of elements).


  /// Returns the result of calling `body` on the scalars of `self`.
  ///
  /// A default is provided that returns a pointer to `self`.
  mutating func withUnsafeMutableBufferPointer<R>(
    _ body: (UnsafeMutableBufferPointer<Double>) throws -> R

  /// The dimension of the vector.
  static var dimension: Int { get }

  /// The standard orthonormal basis.
  ///
  /// Note: Depends on a determined standard basis, and therefore would not be available on a
  /// generalized vector.
  static var standardBasis: [Self] { get }
}

