SmartList& operator<<( const SmartList<Src>& srcList ) { for( auto it : srcList ) addIfValid( ptr_cast<T>( it ) ); return *this; }
SmartList& append( const SmartList<T>& other ) { for( auto it : other ) addIfValid( it ); return *this; }
SmartList& append( const SmartList<T>& other, bool checkValid=true) { if (checkValid) { for (const auto& it : other) addIfValid(it); } else { _data.insert(_data.end(), other.begin(), other.end()); } return *this; }