[swift-users] Swift 3 segmentation error 11
Don Giovanni
don-giovanni at hotmail.com
Fri Mar 10 17:32:05 CST 2017
The following code generates a segmentation error:
extension Int
{
static prefix func++(i:Int)->Int{
return i+1;
}
static prefix func--(i:Int)->Int{
return i-1;
}
}
infix operator <-;
class DynamicList<T>: RangeReplaceableCollection, MutableCollection, BidirectionalCollection
{
var length:Int;
var arr:Array<T>?;
var startIndex:Int{
return 0;
}
var endIndex:Int{
return length;
}
subscript(i:Int)->T{
get{
return arr![i];
}
set{
arr![i] = newValue;
}
}
func index(after i: Int) -> Int{
return ++i;
}
func index(before i: Int) -> Int{
return --i;
}
required init(){
length = 0;
}
static func <- (left: inout DynamicList<T>, right: DynamicList<T>){
}
/* func replaceSubrange<C>(_ subrange: Range<Self.Index>, with newElements: C) where C : Collection,
C.Iterator.Element == Iterator.Element */
func replaceSubrange<C>(_ subrange: Range<DynamicList.Index>, with c: C)
where C : Collection, C.Iterator.Element == DynamicList.Iterator.Element{
}
}
My intent here is to have the generic class `DynamicList<T>`
adopt three protocols:
`class DynamicList<T>: RangeReplaceableCollection, MutableCollection, BidirectionalCollection`
as indicated in the code above but it generates segmentation error.
However, when I replace `MutableCollection` with `Collection`, code above complies.
If I remove `BidirectionalCollection`, the code above compiles with no segmentation error.
Is it not possible to adopt all 3:
- RangeReplaceableCollection
- MutableCollection
- BidirectionalCollection
at the same time? Thanks.
More information about the swift-users
mailing list