TTimo / GtkRadiant

The open source, cross platform level editor for idtech games
http://icculus.org/gtkradiant/
Other
591 stars 156 forks source link

Do not do `using namespace std` to avoid type conflict #681

Closed illwieckz closed 2 years ago

illwieckz commented 2 years ago

The STL now defines std::byte so doing using namespace std will conflict will custom definition of byte, which this legacy code is full of.

It looks like NetRadiant went the route of making explicit usage of std:: prefixed types and did not renamed the custom definition of byte, so doing the same reduces diff noise between the two trees.

This also makes the code future proof if the STL decides to define some other types with common name.

This patches replaces all usages of map, pair and vector with std::map, std::pair and std::vector and removes the using namespace std line in stl_check.h.

libs/mathlib.h:132:44: error: reference to ‘byte’ is ambiguous
  132 | void NormalToLatLong( const vec3_t normal, byte bytes[2] );
      |                                            ^~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:61,
                 from /usr/include/c++/11/bits/char_traits.h:39,
                 from /usr/include/c++/11/ios:40,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from libs/missing.h:76,
                 from radiant/qe3.h:40,
                 from radiant/stdafx.h:39,
                 from radiant/bp_dlg.cpp:28:
/usr/include/c++/11/bits/cpp_type_traits.h:404:30: note: candidates are: ‘enum class std::byte’
  404 |   enum class byte : unsigned char;
      |                              ^~~~