* config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
[official-gcc.git] / gcc / testsuite / g++.dg / tm / 20100727.C
blobbda2df0607c4dd55dbd948b73cf7dd54d3391f8a
1 // { dg-do compile }
2 // { dg-options "-fgnu-tm" }
4 typedef long int ptrdiff_t;
5 typedef long unsigned int size_t;
6 namespace std __attribute__ ((__visibility__ ("default")))
8   using::ptrdiff_t;
9   using::size_t;
12 namespace std __attribute__ ((__visibility__ ("default")))
14   struct input_iterator_tag
15   {
16   };
17   struct output_iterator_tag
18   {
19   };
20   struct forward_iterator_tag:public input_iterator_tag
21   {
22   };
23   struct bidirectional_iterator_tag:public forward_iterator_tag
24   {
25   };
26   struct random_access_iterator_tag:public bidirectional_iterator_tag
27   {
28   };
29   template < typename _Category, typename _Tp, typename _Distance =
30     ptrdiff_t, typename _Pointer = _Tp *, typename _Reference =
31     _Tp & >struct iterator
32   {
33     typedef _Category iterator_category;
34     typedef _Tp value_type;
35     typedef _Distance difference_type;
36     typedef _Pointer pointer;
37     typedef _Reference reference;
38   };
39   template < typename _Iterator > struct iterator_traits
40   {
41     typedef typename _Iterator::iterator_category iterator_category;
42     typedef typename _Iterator::value_type value_type;
43     typedef typename _Iterator::difference_type difference_type;
44     typedef typename _Iterator::pointer pointer;
45     typedef typename _Iterator::reference reference;
46   };
47   template < typename _Tp > struct iterator_traits <_Tp * >
48   {
49     typedef random_access_iterator_tag iterator_category;
50     typedef _Tp value_type;
51     typedef ptrdiff_t difference_type;
52     typedef _Tp *pointer;
53     typedef _Tp & reference;
54   };
55   template < typename _Tp > struct iterator_traits <const _Tp *>
56   {
57     typedef random_access_iterator_tag iterator_category;
58     typedef _Tp value_type;
59     typedef ptrdiff_t difference_type;
60     typedef const _Tp *pointer;
61     typedef const _Tp & reference;
62   };
63   template < typename _Iter > inline typename iterator_traits <
64     _Iter >::iterator_category __iterator_category (const _Iter &)
65   {
66     return typename iterator_traits < _Iter >::iterator_category ();
67   }
70 namespace std __attribute__ ((__visibility__ ("default")))
72 template < typename _Iterator > class reverse_iterator:public iterator < typename iterator_traits < _Iterator >::iterator_category,
73     typename iterator_traits < _Iterator >::value_type,
74     typename iterator_traits < _Iterator >::difference_type,
75     typename iterator_traits < _Iterator >::pointer,
76     typename iterator_traits < _Iterator >::reference >
77   {
78   protected:_Iterator current;
79     typedef iterator_traits < _Iterator > __traits_type;
80   public:typedef _Iterator iterator_type;
81     typedef typename __traits_type::difference_type difference_type;
82     typedef typename __traits_type::pointer pointer;
83     typedef typename __traits_type::reference reference;
84   reverse_iterator ():current ()
85     {
86     } explicit reverse_iterator (iterator_type __x):current (__x)
87     {
88     } reverse_iterator (const reverse_iterator & __x):current (__x.current)
89     {
90     } template < typename _Iter > reverse_iterator (const reverse_iterator <
91                                                     _Iter >
92                                                     &__x):current (__x.
93                                                                    base ())
94     {
95     } iterator_type base () const
96     {
97       return current;
98     }
99     reference operator* () const
100     {
101       _Iterator __tmp = current;
102         return *--__tmp;
103     }
104     pointer operator-> () const
105     {
106       return &(operator* ());
107     }
108     reverse_iterator & operator++ ()
109     {
110       --current;
111       return *this;
112     }
113     reverse_iterator operator++ (int)
114     {
115       reverse_iterator __tmp = *this;
116       --current;
117       return __tmp;
118     }
119     reverse_iterator & operator-- ()
120     {
121       ++current;
122       return *this;
123     }
124     reverse_iterator operator-- (int)
125     {
126       reverse_iterator __tmp = *this;
127       ++current;
128       return __tmp;
129     }
130     reverse_iterator operator+ (difference_type __n) const
131     {
132       return reverse_iterator (current - __n);
133     }
134     reverse_iterator & operator+= (difference_type __n)
135     {
136       current -= __n;
137       return *this;
138     }
139     reverse_iterator operator- (difference_type __n) const
140     {
141       return reverse_iterator (current + __n);
142     }
143     reverse_iterator & operator-= (difference_type __n)
144     {
145       current += __n;
146       return *this;
147     }
148     reference operator[] (difference_type __n) const
149     {
150       return *(*this + __n);
151     }
152   };
153   template < typename _Iterator >
154     inline bool operator== (const reverse_iterator < _Iterator > &__x,
155                             const reverse_iterator < _Iterator > &__y)
156   {
157     return __x.base () == __y.base ();
158   }
159   template < typename _Iterator >
160     inline bool operator< (const reverse_iterator < _Iterator > &__x,
161                            const reverse_iterator < _Iterator > &__y)
162   {
163     return __y.base () < __x.base ();
164   }
165   template < typename _Iterator >
166     inline bool operator!= (const reverse_iterator < _Iterator > &__x,
167                             const reverse_iterator < _Iterator > &__y)
168   {
169     return !(__x == __y);
170   }
171   template < typename _Iterator >
172     inline bool operator> (const reverse_iterator < _Iterator > &__x,
173                            const reverse_iterator < _Iterator > &__y)
174   {
175     return __y < __x;
176   }
177   template < typename _Iterator >
178     inline bool operator<= (const reverse_iterator < _Iterator > &__x,
179                             const reverse_iterator < _Iterator > &__y)
180   {
181     return !(__y < __x);
182   }
183   template < typename _Iterator >
184     inline bool operator>= (const reverse_iterator < _Iterator > &__x,
185                             const reverse_iterator < _Iterator > &__y)
186   {
187     return !(__x < __y);
188   }
189   template < typename _Iterator > inline typename reverse_iterator <
190     _Iterator >::difference_type operator- (const reverse_iterator <
191                                             _Iterator > &__x,
192                                             const reverse_iterator <
193                                             _Iterator > &__y)
194   {
195     return __y.base () - __x.base ();
196   }
197   template < typename _Iterator > inline reverse_iterator < _Iterator >
198     operator+ (typename reverse_iterator < _Iterator >::difference_type __n,
199                const reverse_iterator < _Iterator > &__x)
200   {
201     return reverse_iterator < _Iterator > (__x.base () - __n);
202   }
203   template < typename _IteratorL,
204     typename _IteratorR > inline bool operator== (const reverse_iterator <
205                                                   _IteratorL > &__x,
206                                                   const reverse_iterator <
207                                                   _IteratorR > &__y)
208   {
209     return __x.base () == __y.base ();
210   }
211   template < typename _IteratorL,
212     typename _IteratorR > inline bool operator< (const reverse_iterator <
213                                                  _IteratorL > &__x,
214                                                  const reverse_iterator <
215                                                  _IteratorR > &__y)
216   {
217     return __y.base () < __x.base ();
218   }
219   template < typename _IteratorL,
220     typename _IteratorR > inline bool operator!= (const reverse_iterator <
221                                                   _IteratorL > &__x,
222                                                   const reverse_iterator <
223                                                   _IteratorR > &__y)
224   {
225     return !(__x == __y);
226   }
227   template < typename _IteratorL,
228     typename _IteratorR > inline bool operator> (const reverse_iterator <
229                                                  _IteratorL > &__x,
230                                                  const reverse_iterator <
231                                                  _IteratorR > &__y)
232   {
233     return __y < __x;
234   }
235   template < typename _IteratorL,
236     typename _IteratorR > inline bool operator<= (const reverse_iterator <
237                                                   _IteratorL > &__x,
238                                                   const reverse_iterator <
239                                                   _IteratorR > &__y)
240   {
241     return !(__y < __x);
242   }
243   template < typename _IteratorL,
244     typename _IteratorR > inline bool operator>= (const reverse_iterator <
245                                                   _IteratorL > &__x,
246                                                   const reverse_iterator <
247                                                   _IteratorR > &__y)
248   {
249     return !(__x < __y);
250   }
251   template < typename _IteratorL,
252     typename _IteratorR > inline typename reverse_iterator <
253     _IteratorL >::difference_type operator- (const reverse_iterator <
254                                              _IteratorL > &__x,
255                                              const reverse_iterator <
256                                              _IteratorR > &__y)
257   {
258     return __y.base () - __x.base ();
259   }
260 template < typename _Container > class back_insert_iterator:public iterator < output_iterator_tag, void, void, void,
261     void >
262   {
263   protected:_Container * container;
264   public:typedef _Container container_type;
265     explicit back_insert_iterator (_Container & __x):container (&__x)
266     {
267     } back_insert_iterator & operator= (typename _Container::
268                                         const_reference __value)
269     {
270       container->push_back (__value);
271       return *this;
272     }
273     back_insert_iterator & operator* ()
274     {
275       return *this;
276     }
277     back_insert_iterator & operator++ ()
278     {
279       return *this;
280     }
281     back_insert_iterator operator++ (int)
282     {
283       return *this;
284     }
285   };
286   template < typename _Container > inline back_insert_iterator < _Container >
287     back_inserter (_Container & __x)
288   {
289     return back_insert_iterator < _Container > (__x);
290   }
291 template < typename _Container > class front_insert_iterator:public iterator < output_iterator_tag, void, void, void,
292     void >
293   {
294   protected:_Container * container;
295   public:typedef _Container container_type;
296     explicit front_insert_iterator (_Container & __x):container (&__x)
297     {
298     } front_insert_iterator & operator= (typename _Container::
299                                          const_reference __value)
300     {
301       container->push_front (__value);
302       return *this;
303     }
304     front_insert_iterator & operator* ()
305     {
306       return *this;
307     }
308     front_insert_iterator & operator++ ()
309     {
310       return *this;
311     }
312     front_insert_iterator operator++ (int)
313     {
314       return *this;
315     }
316   };
317   template < typename _Container > inline front_insert_iterator < _Container >
318     front_inserter (_Container & __x)
319   {
320     return front_insert_iterator < _Container > (__x);
321   }
322 template < typename _Container > class insert_iterator:public iterator < output_iterator_tag, void, void, void,
323     void >
324   {
325   protected:_Container * container;
326     typename _Container::iterator iter;
327   public:typedef _Container container_type;
328       insert_iterator (_Container & __x,
329                        typename _Container::iterator __i):container (&__x),
330       iter (__i)
331     {
332     } insert_iterator & operator= (typename _Container::
333                                    const_reference __value)
334     {
335       iter = container->insert (iter, __value);
336       ++iter;
337       return *this;
338     }
339     insert_iterator & operator* ()
340     {
341       return *this;
342     }
343     insert_iterator & operator++ ()
344     {
345       return *this;
346     }
347     insert_iterator & operator++ (int)
348     {
349       return *this;
350     }
351   };
352   template < typename _Container,
353     typename _Iterator > inline insert_iterator < _Container >
354     inserter (_Container & __x, _Iterator __i)
355   {
356     return insert_iterator < _Container > (__x,
357                                            typename _Container::
358                                            iterator (__i));
359   }
362 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
364   using std::size_t;
365   using std::ptrdiff_t;
366   template < typename _Tp > class new_allocator
367   {
368   public:typedef size_t size_type;
369     typedef ptrdiff_t difference_type;
370     typedef _Tp *pointer;
371     typedef const _Tp *const_pointer;
372     typedef _Tp & reference;
373     typedef const _Tp & const_reference;
374     typedef _Tp value_type;
375     template < typename _Tp1 > struct rebind
376     {
377       typedef new_allocator < _Tp1 > other;
378     };
379     new_allocator ()throw ()
380     {
381     } new_allocator (const new_allocator &) throw ()
382     {
383     } template < typename _Tp1 > new_allocator (const new_allocator < _Tp1 >
384                                                 &) throw ()
385     {
386     } ~new_allocator ()throw ()
387     {
388     } pointer address (reference __x) const
389     {
390       return &__x;
391     }
392     const_pointer address (const_reference __x) const
393     {
394       return &__x;
395     }
396     pointer allocate (size_type __n, const void * = 0)
397     {
398       return static_cast < _Tp * >(::operator  new (__n * sizeof (_Tp)));
399     }
400     void deallocate (pointer __p, size_type)
401     {
402       ::operator  delete (__p);
403     } size_type max_size () const throw ()
404     {
405       return size_t (-1) / sizeof (_Tp);
406     }
407     void construct (pointer __p, const _Tp & __val)
408     {
409       ::new ((void *) __p) _Tp (__val);
410     } void destroy (pointer __p)
411     {
412       __p->~_Tp ();
413   }};
414   template < typename _Tp > inline bool operator== (const new_allocator <
415                                                     _Tp > &,
416                                                     const new_allocator <
417                                                     _Tp > &)
418   {
419     return true;
420   }
421   template < typename _Tp > inline bool operator!= (const new_allocator <
422                                                     _Tp > &,
423                                                     const new_allocator <
424                                                     _Tp > &)
425   {
426     return false;
427   }
430 namespace std __attribute__ ((__visibility__ ("default")))
432   template < typename _Tp > class allocator;
433   template <> class allocator < void >
434   {
435   public:typedef size_t size_type;
436     typedef ptrdiff_t difference_type;
437     typedef void *pointer;
438     typedef const void *const_pointer;
439     typedef void value_type;
440       template < typename _Tp1 > struct rebind
441     {
442       typedef allocator < _Tp1 > other;
443     };
444   };
445 template < typename _Tp > class allocator:public __gnu_cxx::new_allocator <
446     _Tp >
447   {
448   public:typedef size_t size_type;
449     typedef ptrdiff_t difference_type;
450     typedef _Tp *pointer;
451     typedef const _Tp *const_pointer;
452     typedef _Tp & reference;
453     typedef const _Tp & const_reference;
454     typedef _Tp value_type;
455     template < typename _Tp1 > struct rebind
456     {
457       typedef allocator < _Tp1 > other;
458     };
459     allocator ()throw ()
460     {
461     } allocator (const allocator & __a) throw ():__gnu_cxx::new_allocator <
462       _Tp > (__a)
463     {
464     } template < typename _Tp1 > allocator (const allocator < _Tp1 >
465                                             &) throw ()
466     {
467     } ~allocator ()throw ()
468     {
469   }};
470   template < typename _T1,
471     typename _T2 > inline bool operator== (const allocator < _T1 > &,
472                                            const allocator < _T2 > &)
473   {
474     return true;
475   }
476   template < typename _Tp > inline bool operator== (const allocator < _Tp > &,
477                                                     const allocator < _Tp > &)
478   {
479     return true;
480   }
481   template < typename _T1,
482     typename _T2 > inline bool operator!= (const allocator < _T1 > &,
483                                            const allocator < _T2 > &)
484   {
485     return false;
486   }
487   template < typename _Tp > inline bool operator!= (const allocator < _Tp > &,
488                                                     const allocator < _Tp > &)
489   {
490     return false;
491   }
492   template < typename _Alloc, bool = __is_empty (_Alloc) > struct __alloc_swap
493   {
494     static void _S_do_it (_Alloc &, _Alloc &)
495     {
496   }};
497   template < typename _Alloc > struct __alloc_swap <_Alloc, false >
498   {
499     static void _S_do_it (_Alloc & __one, _Alloc & __two)
500     {
501       if (__one != __two)
502         swap (__one, __two);
503     }
504   };
505   template < typename _Alloc, bool = __is_empty (_Alloc) > struct __alloc_neq
506   {
507     static bool _S_do_it (const _Alloc &, const _Alloc &)
508     {
509       return false;
510     }
511   };
512   template < typename _Alloc > struct __alloc_neq <_Alloc, false >
513   {
514     static bool _S_do_it (const _Alloc & __one, const _Alloc & __two)
515     {
516       return __one != __two;
517     }
518   };
521 namespace std __attribute__ ((__visibility__ ("default")))
523   struct _List_node_base
524   {
525     _List_node_base *_M_next;
526     _List_node_base *_M_prev;
527     static void swap (_List_node_base & __x, _List_node_base & __y) throw ();
528     void _M_transfer (_List_node_base * const __first,
529                       _List_node_base * const __last) throw ();
530     void _M_reverse () throw ();
531     void _M_hook (_List_node_base * const __position) throw ();
532     void _M_unhook () throw ();
533   };
534   template < typename _Tp > struct _List_node:public _List_node_base
535   {
536     _Tp _M_data;
537   };
538   template < typename _Tp > struct _List_iterator
539   {
540     typedef _List_iterator < _Tp > _Self;
541     typedef _List_node < _Tp > _Node;
542     typedef ptrdiff_t difference_type;
543     typedef std::bidirectional_iterator_tag iterator_category;
544     typedef _Tp value_type;
545     typedef _Tp *pointer;
546     typedef _Tp & reference;
547       _List_iterator ():_M_node ()
548     {
549     } explicit _List_iterator (_List_node_base * __x):_M_node (__x)
550     {
551     } reference operator* () const
552     {
553       return static_cast < _Node * >(_M_node)->_M_data;
554     }
555     pointer operator-> () const
556     {
557       return &static_cast < _Node * >(_M_node)->_M_data;
558     }
559     _Self & operator++ ()
560     {
561       _M_node = _M_node->_M_next;
562       return *this;
563     }
564     _Self operator++ (int)
565     {
566       _Self __tmp = *this;
567       _M_node = _M_node->_M_next;
568       return __tmp;
569     }
570     _Self & operator-- ()
571     {
572       _M_node = _M_node->_M_prev;
573       return *this;
574     }
575     _Self operator-- (int)
576     {
577       _Self __tmp = *this;
578       _M_node = _M_node->_M_prev;
579       return __tmp;
580     }
581     bool operator== (const _Self & __x) const
582     {
583       return _M_node == __x._M_node;
584     }
585     bool operator!= (const _Self & __x) const
586     {
587       return _M_node != __x._M_node;
588     }
589     _List_node_base *_M_node;
590   };
591   template < typename _Tp > struct _List_const_iterator
592   {
593     typedef _List_const_iterator < _Tp > _Self;
594     typedef const _List_node < _Tp > _Node;
595     typedef _List_iterator < _Tp > iterator;
596     typedef ptrdiff_t difference_type;
597     typedef std::bidirectional_iterator_tag iterator_category;
598     typedef _Tp value_type;
599     typedef const _Tp *pointer;
600     typedef const _Tp & reference;
601       _List_const_iterator ():_M_node ()
602     {
603     } explicit _List_const_iterator (const _List_node_base *
604                                      __x):_M_node (__x)
605     {
606     } _List_const_iterator (const iterator & __x):_M_node (__x._M_node)
607     {
608     } reference operator* () const
609     {
610       return static_cast < _Node * >(_M_node)->_M_data;
611     }
612     pointer operator-> () const
613     {
614       return &static_cast < _Node * >(_M_node)->_M_data;
615     }
616     _Self & operator++ ()
617     {
618       _M_node = _M_node->_M_next;
619       return *this;
620     }
621     _Self operator++ (int)
622     {
623       _Self __tmp = *this;
624       _M_node = _M_node->_M_next;
625       return __tmp;
626     }
627     _Self & operator-- ()
628     {
629       _M_node = _M_node->_M_prev;
630       return *this;
631     }
632     _Self operator-- (int)
633     {
634       _Self __tmp = *this;
635       _M_node = _M_node->_M_prev;
636       return __tmp;
637     }
638     bool operator== (const _Self & __x) const
639     {
640       return _M_node == __x._M_node;
641     }
642     bool operator!= (const _Self & __x) const
643     {
644       return _M_node != __x._M_node;
645     }
646     const _List_node_base *_M_node;
647   };
648   template < typename _Tp, typename _Alloc > class _List_base
649   {
650   protected:typedef typename _Alloc::template rebind < _List_node < _Tp >
651       >::other _Node_alloc_type;
652     typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type;
653     struct _List_impl:public _Node_alloc_type
654     {
655       _List_node_base _M_node;
656         _List_impl ():_Node_alloc_type (), _M_node ()
657       {
658       } _List_impl (const _Node_alloc_type & __a):_Node_alloc_type (__a),
659         _M_node ()
660       {
661     }};
662     _List_impl _M_impl;
663     _List_node < _Tp > *_M_get_node ()
664     {
665       return _M_impl._Node_alloc_type::allocate (1);
666     }
667     void _M_put_node (_List_node < _Tp > *__p)
668     {
669       _M_impl._Node_alloc_type::deallocate (__p, 1);
670   } public:typedef _Alloc allocator_type;
671     _Node_alloc_type & _M_get_Node_allocator ()
672     {
673       return *static_cast < _Node_alloc_type * >(&this->_M_impl);
674     }
675     const _Node_alloc_type & _M_get_Node_allocator () const
676     {
677       return *static_cast < const _Node_alloc_type *>(&this->_M_impl);
678     } _Tp_alloc_type _M_get_Tp_allocator () const
679     {
680       return _Tp_alloc_type (_M_get_Node_allocator ());
681     }
682     allocator_type get_allocator () const
683     {
684       return allocator_type (_M_get_Node_allocator ());
685     }
686     _List_base ():_M_impl ()
687     {
688       _M_init ();
689     }
690   _List_base (const allocator_type & __a):_M_impl (__a)
691     {
692       _M_init ();
693     } ~_List_base ()
694     {
695       _M_clear ();
696     } void _M_clear ();
697     void _M_init ()
698     {
699       this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
700       this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
701   }};
702 template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class list:protected _List_base < _Tp,
703     _Alloc
704     >
705   {
706     typedef typename _Alloc::value_type _Alloc_value_type;
707     typedef _List_base < _Tp, _Alloc > _Base;
708     typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
709   public:typedef _Tp value_type;
710     typedef typename _Tp_alloc_type::pointer pointer;
711     typedef typename _Tp_alloc_type::const_pointer const_pointer;
712     typedef typename _Tp_alloc_type::reference reference;
713     typedef typename _Tp_alloc_type::const_reference const_reference;
714     typedef _List_iterator < _Tp > iterator;
715     typedef _List_const_iterator < _Tp > const_iterator;
716     typedef std::reverse_iterator < const_iterator > const_reverse_iterator;
717     typedef std::reverse_iterator < iterator > reverse_iterator;
718     typedef size_t size_type;
719     typedef ptrdiff_t difference_type;
720     typedef _Alloc allocator_type;
721   protected:typedef _List_node < _Tp > _Node;
722     using _Base::_M_impl;
723     using _Base::_M_put_node;
724     using _Base::_M_get_node;
725     using _Base::_M_get_Tp_allocator;
726     using _Base::_M_get_Node_allocator;
727   public:iterator begin ()
728     {
729       return iterator (this->_M_impl._M_node._M_next);
730     }
731     const_iterator begin () const
732     {
733       return const_iterator (this->_M_impl._M_node._M_next);
734     }
735     iterator end ()
736     {
737       return iterator (&this->_M_impl._M_node);
738     }
739     void remove (const _Tp & __value);
740     template < typename _Predicate > void remove_if (_Predicate);
741     void _M_erase (iterator __position)
742     {
743       __position._M_node->_M_unhook ();
744       _Node *__n = static_cast < _Node * >(__position._M_node);
745       _M_get_Tp_allocator ().destroy (&__n->_M_data);
746       _M_put_node (__n);
747     } void _M_check_equal_allocators (list & __x)
748     {
749       if (std::__alloc_neq <
750           typename _Base::_Node_alloc_type >::
751           _S_do_it (_M_get_Node_allocator (), __x._M_get_Node_allocator ()));
752     }
753   };
756 namespace std __attribute__ ((__visibility__ ("default")))
758   template < typename _Tp, typename _Alloc > void list < _Tp,
759     _Alloc >::remove (const value_type & __value)
760   {
761     iterator __first = begin ();
762     iterator __last = end ();
763     iterator __extra = __last;
764     while (__first != __last)
765       {
766         iterator __next = __first;
767         ++__next;
768         if (*__first == __value)
769           {
770             if (&*__first != &__value)
771               _M_erase (__first);
772             else
773               __extra = __first;
774           }
775         __first = __next;
776       }
777     if (__extra != __last)
778       _M_erase (__extra);
779   }
782 class Unit
784 public:int dummy;
786 class Building
788 public:__attribute__ ((transaction_callable)) void removeUnitFromInside (Unit *
789                                                                     unit);
790     std::list < Unit * >unitsInside;
792 void
793 Building::removeUnitFromInside (Unit * unit)
795   unitsInside.remove (unit);