C++11 has added new types (std::hash), which get dropped into the namespace due to awful 'using namespace std;' declarations everywhere, causing name collisions. Instead, only drop a minimal set of declarations into the global :: namespace. See also: https://bugs.gentoo.org/show_bug.cgi?id=594706 --- a/fire/test-fire.cc +++ b/fire/test-fire.cc @@ -2,7 +2,7 @@ #include #include -using namespace std; +using std::cout; extern tree_chunk_info fire_chunk_info; --- a/freehdl/cdfggen-chunk.h +++ b/freehdl/cdfggen-chunk.h @@ -7,7 +7,9 @@ #include #include typedef enum {to, downto} cdfgg_direction; -using namespace std; +using std::string; +using std::vector; +using std::pair; extern tree_chunk_info cdfggen_chunk_info; extern tree_ctype_info int_ctype_info; --- a/freehdl/cdfggen-chunk.t +++ b/freehdl/cdfggen-chunk.t @@ -13,8 +13,7 @@ (header-add "#include " "#include " "#include " - "typedef enum {to, downto} cdfgg_direction;" - "using namespace std;") + "typedef enum {to, downto} cdfgg_direction;") (impl-add "#include ") --- a/freehdl/kernel-attributes.hh +++ b/freehdl/kernel-attributes.hh @@ -1,6 +1,8 @@ #ifndef FREEHDL_KERNEL_ATTRIBUTES_H #define FREEHDL_KERNEL_ATTRIBUTES_H +using std::max; + /* ************************************************************* * Function kind attributes for signals * ************************************************************* */ --- a/freehdl/kernel-db.hh +++ b/freehdl/kernel-db.hh @@ -3,6 +3,8 @@ #include +#include +using std::string; /* This header file includes the definitions that are required to * setup a kernel database. This database will be used by the kernel @@ -254,7 +256,7 @@ // A hash function template used tp generate a hash number from // d -class db_basic_key_hash : public hash { +class db_basic_key_hash : public __gnu_cxx::hash { public: size_t operator()(const db_basic_key& x) const { return (*(hash *)this)(((unsigned long)x.value)>>2); --- a/freehdl/kernel-dump.hh +++ b/freehdl/kernel-dump.hh @@ -13,9 +13,9 @@ #include #include -using namespace std; +using std::fstream; -typedef map > Tmap; +typedef map > Tmap; extern Tmap mapping_translation_table; // For each signal which is dumped an virtual process is created. This --- a/freehdl/kernel-fhdl-stream.hh +++ b/freehdl/kernel-fhdl-stream.hh @@ -9,7 +9,9 @@ #include #include -using namespace std; +using std::istream; +using std::ostream; +using std::string; struct fhdl_ostream_t { union { --- a/freehdl/kernel-map-list.hh +++ b/freehdl/kernel-map-list.hh @@ -7,7 +7,6 @@ #include #include -using namespace std; //using namespace __gnu_cxx; // A signal_link instance describes the connection --- a/freehdl/kernel-name-stack.hh +++ b/freehdl/kernel-name-stack.hh @@ -3,7 +3,7 @@ #include -using namespace std; +using std::string; #define NAME_STACK_INCREMENT 10 --- a/freehdl/kernel-signal-source-list-array.hh +++ b/freehdl/kernel-signal-source-list-array.hh @@ -13,7 +13,6 @@ #include #include -using namespace std; //using namespace __gnu_cxx; // signal_source stores information about a source of a signal. Note --- a/freehdl/kernel-util.hh +++ b/freehdl/kernel-util.hh @@ -15,7 +15,8 @@ #include #endif -using namespace std; +using std::stringstream; +using std::string; #if !defined __GNUC__ || __GNUC__ != 2 using namespace __gnu_cxx; @@ -24,7 +25,7 @@ // A hash function template used tp generate a hash number from // pointer values. template -class pointer_hash : public hash { +class pointer_hash : public __gnu_cxx::hash { public: size_t operator()(const T& x) const { return (*(hash *)this)(((unsigned long)x)>>2); --- a/freehdl/std.h +++ b/freehdl/std.h @@ -1,7 +1,6 @@ #ifndef FREEHDL_STD_H #define FREEHDL_STD_H -using namespace std; #include #include --- a/freehdl/std-vhdl-types.hh +++ b/freehdl/std-vhdl-types.hh @@ -6,13 +6,24 @@ #include #include #include +#include +#include +#include #include #include #include #include -using namespace std; +using std::string; +using std::istream; +using std::ostream; +using std::min; +using std::map; +using std::stringstream; +using std::list; +using std::less; +using std::iostream; typedef long long int lint; const int BUFFER_STREAM_SIZE_INCREMENT = 1024; --- a/freehdl/vaul-lexer.h +++ b/freehdl/vaul-lexer.h @@ -32,7 +32,6 @@ #include #include -using namespace std; #undef yyFlexLexer #define yyFlexLexer vaul_FlexLexer --- a/ieee/numeric_std.cc +++ b/ieee/numeric_std.cc @@ -2,6 +2,7 @@ #include +using std::max; /* package :ieee:numeric_std */ /* External declarations */ --- a/kernel/attributes.cc +++ b/kernel/attributes.cc @@ -5,6 +5,7 @@ #include #include #include +using std::max; #include --- a/kernel/db.cc +++ b/kernel/db.cc @@ -1,6 +1,5 @@ #define KERNEL // Include internal kernel definitions -using namespace std; #include --- a/kernel/fhdl_stream.cc +++ b/kernel/fhdl_stream.cc @@ -7,6 +7,9 @@ #include #include +using std::cin; +using std::cout; +using std::stringstream; // Error stream to output error messages generated by the kernel, // e.g. to print error messages due to invalid simulator commands --- a/kernel/kernel_class.cc +++ b/kernel/kernel_class.cc @@ -16,6 +16,10 @@ #include #include +using std::cerr; +using std::pair; +using std::binary_function; + // Arguments that are passed in form the command line int main_argc; char **main_argv; --- a/kernel/main.cc +++ b/kernel/main.cc @@ -34,6 +34,15 @@ #include #include +using std::ios; +using std::ifstream; +using std::ofstream; +using std::ostringstream; +using std::cin; +using std::cerr; +using std::cout; +using std::endl; + #ifdef PERFMON_STATISTICS #include "pcounter.hh" #endif --- a/kernel/map_list.cc +++ b/kernel/map_list.cc @@ -4,6 +4,8 @@ #include #include +using std::max; + // Stores the father signal(s) of port signals port_signal_link_map_t port_signal_link_map; --- a/kernel/name_stack.cc +++ b/kernel/name_stack.cc @@ -1,8 +1,10 @@ #include #include +#include #include #include +using std::stack; name_stack instance_name; --- a/kernel/persistent_cdfg_dump.cc +++ b/kernel/persistent_cdfg_dump.cc @@ -3,6 +3,7 @@ #include #include +using std::endl; buffer_stream register_cdfg_tmp_buffer; --- a/kernel/sig_info.cc +++ b/kernel/sig_info.cc @@ -1,6 +1,5 @@ #define KERNEL // Include internal kernel definitions -using namespace std; #include #include #include --- a/std/internal_textio.cc +++ b/std/internal_textio.cc @@ -10,6 +10,10 @@ #include #include +using std::ios; +using std::cin; +using std::cout; + /* package :std:textio */ /* Definitions for access type :std:textio:line */ --- a/std/vhdl_types.cc +++ b/std/vhdl_types.cc @@ -12,6 +12,9 @@ #include +using std::ios; +using std::ifstream; +using std::ofstream; /* ************************************************************* * Some global functions --- a/v2cc/mapping.cc +++ b/v2cc/mapping.cc @@ -34,7 +34,12 @@ #include #include -using namespace std; +using std::string; +using std::list; +using std::map; +using std::istream; +using std::ifstream; +using std::cerr; v2cc_mapper::v2cc_mapper () { --- a/v2cc/v2cc.cc +++ b/v2cc/v2cc.cc @@ -35,7 +35,6 @@ */ -using namespace std; #if HAVE_MALLOC_H #include --- a/v2cc/v2cc-const-fold.cc +++ b/v2cc/v2cc-const-fold.cc @@ -16,6 +16,9 @@ #include "v2cc-util.h" +using std::cerr; +using std::max; +using std::min; // Used to generate error messages extern vaul_error_printer codegen_error; --- a/v2cc/v2cc-decl.cc +++ b/v2cc/v2cc-decl.cc @@ -13,6 +13,9 @@ #include "mapping.h" #include "v2cc-util.h" +using std::endl; +using std::min; +using std::max; void test (RegionStack &rstack) { --- a/v2cc/v2cc-explore.cc +++ b/v2cc/v2cc-explore.cc @@ -15,7 +15,6 @@ #include "mapping.h" #include "v2cc-util.h" -using namespace std; // Used to generate error messages extern vaul_error_printer codegen_error; --- a/v2cc/v2cc.h +++ b/v2cc/v2cc.h @@ -1,7 +1,17 @@ #ifndef V2CC_HEADER #define V2CC_HEADER -using namespace std; +using std::vector; +using std::list; +using std::string; +using std::pair; +using std::string; +using std::set; +using std::less; +using std::deque; +using std::binary_function; +using std::map; +using std::binary_function; #include #include "mapping.h" --- a/v2cc/v2cc-qid.cc +++ b/v2cc/v2cc-qid.cc @@ -4,6 +4,7 @@ #include "v2cc-util.h" +using std::endl; // ****************************************************************************************** // Name: m_qid , generic function --- a/v2cc/v2cc-util.cc +++ b/v2cc/v2cc-util.cc @@ -9,6 +9,9 @@ #include "v2cc-util.h" +using std::endl; +using std::hex; +using std::dec; // ****************************************************************************************** // Some global variables --- a/v2cc/v2cc-util.h +++ b/v2cc/v2cc-util.h @@ -2,13 +2,18 @@ #ifndef V2CC_UTIL_H #define V2CC_UTIL_H -using namespace std; #include #include #include #include "v2cc-chunk.h" +using std::stringstream; +using std::setprecision; +using std::showpoint; +using std::ofstream; +using std::cout; + // ****************************************************************************************** // Some global variables // ****************************************************************************************** --- a/vaul/bison-parser.cc +++ b/vaul/bison-parser.cc @@ -86,7 +86,6 @@ #include #endif -using namespace std; #define YYINITDEPTH 10000 #define YYMAXDEPTH 100000 --- a/vaul/bison-parser.yy +++ b/vaul/bison-parser.yy @@ -49,7 +49,6 @@ #include #endif -using namespace std; #define YYINITDEPTH 10000 #define YYMAXDEPTH 100000 --- a/vaul/printer.cc +++ b/vaul/printer.cc @@ -27,7 +27,8 @@ #include #include -using namespace std; +using std::ostringstream; +using std::ostream; void vaul_printer::printf (const char *fmt, ...) { --- a/vaul/tree.cc +++ b/vaul/tree.cc @@ -31,7 +31,7 @@ #include #include -using namespace std; +using std::ostream; vaul_id_set::vaul_id_set(int dummy) {