@@ -31,17 +31,26 @@ namespace internal{
3131 generic_proxy (): parent(0 ), index(-1 ){}
3232
3333 generic_proxy ( const generic_proxy& other ) :
34- parent (other.parent), index(other.index){} ;
34+ parent (other.parent), index(other.index)
35+ {}
3536
36- generic_proxy ( VECTOR & v, R_xlen_t i ) : parent(&v), index(i){} ;
37+ generic_proxy ( VECTOR & v, R_xlen_t i ) :
38+ parent (&v), index(i)
39+ {}
3740
3841 generic_proxy& operator =(SEXP rhs) {
3942 set (rhs) ;
4043 return *this ;
4144 }
4245
43- generic_proxy& operator =(const generic_proxy& rhs) {
44- set (rhs.get ());
46+ generic_proxy& operator =(const generic_proxy& rhs){
47+ set (rhs.get ());
48+ return *this ;
49+ }
50+
51+ template <template <class > class StoragePolicy2 >
52+ generic_proxy& operator =(const generic_proxy<RTYPE ,StoragePolicy2>& rhs) {
53+ set (rhs.get ());
4554 return *this ;
4655 }
4756
@@ -78,13 +87,15 @@ namespace internal{
7887 index = other.index ;
7988 }
8089
90+ inline SEXP get () const {
91+ return VECTOR_ELT (*parent, index );
92+ }
93+
8194 private:
8295 inline void set (SEXP x) {
8396 SET_VECTOR_ELT ( *parent, index, x ) ;
8497 }
85- inline SEXP get () const {
86- return VECTOR_ELT (*parent, index );
87- }
98+
8899
89100 } ;
90101
0 commit comments