1 module imports.test11931d; 2 filter(alias pred)3template filter(alias pred) 4 { 5 auto filter(Range)(Range r) 6 { 7 struct FilterResult 8 { 9 Range array() 10 { 11 return data; 12 } 13 Range data; 14 } 15 return FilterResult(r); 16 } 17 } 18 19 struct ConnectionPoint 20 { disconnectConnectionPoint21 void disconnect() 22 { 23 if(_f) 24 { 25 _f(); 26 _f = null; 27 } 28 } 29 private void delegate() _f; 30 } 31 Signal(T,A...)32struct Signal(T, A...) 33 { 34 ConnectionPoint add(D f) 35 { 36 auto rf = { _arr = _arr.filter!(a => a != f).array; }; 37 return ConnectionPoint(); 38 } 39 40 private: 41 alias D = T delegate(A); 42 D[] _arr; 43 } 44