     self.endIterator = self.sequence.__endUnsafe()
   }
 
+  @inlinable
   public func next() -> Element? {
     if self.rawIterator == self.endIterator {
       return nil

  // which would result in dangling pointers for some C++ sequence types.

  public typealias Element = T.RawIterator.Pointee
  private var sequence: T
  private var rawIterator: T.RawIterator
  private let endIterator: T.RawIterator

  public init(sequence: T) {
    self.sequence = sequence

}

extension CxxSequence {
  @inlinable
  public func makeIterator() -> CxxIterator<Self> {
    return CxxIterator(sequence: self)
  }
