namespace-probleme: stl-typedef in einem Namespace
-
Hiho!
ich hab ein Problem mit folgendem Codeschnippsel:
#include <list> namespace blurt { class AxisAlignedBoundingBox; class TraceableObject; class Ray; namespace kdtree { typedef ::std::list<const blurt::TraceableObject*> ObjectList; // Zeile 24 // ... }; };Der Code liefert beim Kompilieren eine ewig Lange Fehlerliste:
In file included from c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/list:70, from D:\works\coding\cpp\bluRT\src\/blurt/KdTreeHelper.h:11, from D:\works\coding\cpp\bluRT\src\/blurt/KdTree.h:81, from D:\works\coding\cpp\bluRT\src\/blurt/SpatialSubdivision.h:61, from D:\works\coding\cpp\bluRT\src\/blurt/Raytracer.h:14, from D:\works\coding\cpp\bluRT\src\Engine.cpp:12: c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:118: error: 'bidirectional_iterator_tag' in namespace 'blurt::std' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:196: error: 'bidirectional_iterator_tag' in namespace 'blurt::std' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:406: error: expected type-specifier c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:406: error: expected '>' c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:425: error: typedef name may not be a nested-name-specifier c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:425: error: expected ';' before '<' token c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:426: error: typedef name may not be a nested-name-specifier c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:426: error: expected ';' before '<' token c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:617: error: 'reverse_iterator' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:626: error: 'const_reverse_iterator' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:635: error: 'reverse_iterator' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:644: error: 'const_reverse_iterator' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1103: error: '__true_type' has not been declared c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1113: error: '__false_type' has not been declared c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1134: error: '__true_type' has not been declared c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1144: error: '__false_type' has not been declared c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In copy constructor 'blurt::std::list<_Tp, _Alloc>::list(const blurt::std::list<_Tp, _Alloc>&)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:497: error: there are no arguments to '__false_type' that depend on a template parameter, so a declaration of '__false_type' must be available c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:497: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated) c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In constructor 'blurt::std::list<_Tp, _Alloc>::list(_InputIterator, _InputIterator, const _Alloc&)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:514: error: '__is_integer' in namespace 'blurt::std' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:514: error: expected unqualified-id before '<' token c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:515: error: there are no arguments to '_Integral' that depend on a template parameter, so a declaration of '_Integral' must be available c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In member function 'void blurt::std::list<_Tp, _Alloc>::assign(_InputIterator, _InputIterator)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:567: error: '__is_integer' in namespace 'blurt::std' does not name a type c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:567: error: expected unqualified-id before '<' token c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:568: error: there are no arguments to '_Integral' that depend on a template parameter, so a declaration of '_Integral' must be available c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In member function 'size_t blurt::std::list<_Tp, _Alloc>::size() const': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:660: error: 'distance' is not a member of 'blurt::std' c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In member function 'void blurt::std::list<_Tp, _Alloc>::swap(blurt::std::list<_Tp, _Alloc>&)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:896: error: '__alloc_swap' is not a member of 'blurt::std' c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:896: error: expected `(' before '>' token c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:897: error: '::_S_do_it' has not been declared c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In member function 'void blurt::std::list<_Tp, _Alloc>::_M_check_equal_allocators(blurt::std::list<_Tp, _Alloc>&)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1180: error: there are no arguments to '__throw_runtime_error' that depend on a template parameter, so a declaration of '__throw_runtime_error' must be available c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h: In function 'bool blurt::std::operator<(const blurt::std::list<_Tp, _Alloc>&, const blurt::std::list<_Tp, _Alloc>&)': c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/stl_list.h:1226: error: 'lexicographical_compare' is not a member of 'blurt::std' In file included from c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/list:73, from D:\works\coding\cpp\bluRT\src\/blurt/KdTreeHelper.h:11, from D:\works\coding\cpp\bluRT\src\/blurt/KdTree.h:81, from D:\works\coding\cpp\bluRT\src\/blurt/SpatialSubdivision.h:61, from D:\works\coding\cpp\bluRT\src\/blurt/Raytracer.h:14, from D:\works\coding\cpp\bluRT\src\Engine.cpp:12: c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/list.tcc: At global scope: c:/dev/mingw/bin/../lib/gcc/mingw32/4.2.1/../../../../include/c++/4.2.1/bits/list.tcc:159: error: '__false_type' has not been declared In file included from D:\works\coding\cpp\bluRT\src\/blurt/KdTree.h:81, from D:\works\coding\cpp\bluRT\src\/blurt/SpatialSubdivision.h:61, from D:\works\coding\cpp\bluRT\src\/blurt/Raytracer.h:14, from D:\works\coding\cpp\bluRT\src\Engine.cpp:12: D:\works\coding\cpp\bluRT\src\/blurt/KdTreeHelper.h:24: error: expected initializer before '<' token D:\works\coding\cpp\bluRT\src\/blurt/KdTreeHelper.h:39: error: ISO C++ forbids declaration of 'ObjectList' with no type D:\works\coding\cpp\bluRT\src\/blurt/KdTreeHelper.h:39: error: expected ';' before '&' tokenIch hab keine Ahnung was genau da falsch gelaufen ist, dementsprechend waer ich fuer Hilfe dankbar

-
Also bei mir compiliert es mit mingw32 problemlos durch.
-
hmm... hab schon fast befuerchtet dass der Fehler ganz wo anders liegt und das nur die Auswirkungen sind

-
... namespace 'blurt::std' ...
Hast du evtl. die includes falsch positioniert, d.h. innerhalb deines Namespaces 'blurt'?