Code cleanup to pass gcc -Weffc++ warnings
diff --git a/Makefile b/Makefile
index eba6fef..4532fa1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,10 @@
+# Extended C++ warning policy
+CXXFLAGS += -Werror -Wall -Wextra -Wshadow -Wpedantic -Wformat-nonliteral \
+            -Wformat-security -Wswitch-default -Wuninitialized -Wundef \
+            -Wpointer-arith -Woverloaded-virtual -Wctor-dtor-privacy \
+            -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo \
+            -Wno-unused-parameter -Weffc++
+
 all: xmltest staticlib
 
 rebuild: clean all
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index a8a4a20..8f0116b 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -741,6 +741,7 @@
 XMLNode::XMLNode( XMLDocument* doc ) :

     _document( doc ),

     _parent( 0 ),

+    _value(),

     _parseLineNum( 0 ),

     _firstChild( 0 ), _lastChild( 0 ),

     _prev( 0 ), _next( 0 ),

@@ -1993,9 +1994,16 @@
     _processEntities( processEntities ),

     _errorID(XML_SUCCESS),

     _whitespaceMode( whitespaceMode ),

+    _errorStr1(),

+    _errorStr2(),

     _errorLineNum( 0 ),

     _charBuffer( 0 ),

-    _parseCurLineNum( 0 )

+    _parseCurLineNum( 0 ),

+    _unlinked(),

+    _elementPool(),

+    _attributePool(),

+    _textPool(),

+    _commentPool()

 {

     // avoid VC++ C4355 warning about 'this' in initializer list (C4355 is off by default in VS2012+)

     _document = this;

@@ -2367,12 +2375,14 @@
 

 XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :

     _elementJustOpened( false ),

+    _stack(),

     _firstElement( true ),

     _fp( file ),

     _depth( depth ),

     _textDepth( -1 ),

     _processEntities( true ),

-    _compactMode( compact )

+    _compactMode( compact ),

+    _buffer()

 {

     for( int i=0; i<ENTITY_RANGE; ++i ) {

         _entityFlag[i] = false;

diff --git a/tinyxml2.h b/tinyxml2.h
index 7b5bb0e..9774118 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -192,10 +192,11 @@
 class DynArray

 {

 public:

-    DynArray() {

-        _mem = _pool;

-        _allocated = INITIAL_SIZE;

-        _size = 0;

+    DynArray() :

+        _mem( _pool ),

+        _allocated( INITIAL_SIZE ),

+        _size( 0 )

+    {

     }

 

     ~DynArray() {

@@ -333,7 +334,7 @@
 class MemPoolT : public MemPool

 {

 public:

-    MemPoolT() : _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0)	{}

+    MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0)	{}

     ~MemPoolT() {

         Clear();

     }

@@ -1211,7 +1212,7 @@
 private:

     enum { BUF_SIZE = 200 };

 

-    XMLAttribute() : _parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}

+    XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}

     virtual ~XMLAttribute()	{}

 

     XMLAttribute( const XMLAttribute& );	// not supported

@@ -1947,16 +1948,13 @@
 {

 public:

     /// Create a handle from any node (at any depth of the tree.) This can be a null pointer.

-    XMLHandle( XMLNode* node )												{

-        _node = node;

+    XMLHandle( XMLNode* node ) : _node( node ) {

     }

     /// Create a handle from a node.

-    XMLHandle( XMLNode& node )												{

-        _node = &node;

+    XMLHandle( XMLNode& node ) : _node( &node ) {

     }

     /// Copy constructor

-    XMLHandle( const XMLHandle& ref )										{

-        _node = ref._node;

+    XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {

     }

     /// Assignment

     XMLHandle& operator=( const XMLHandle& ref )							{

@@ -2030,14 +2028,11 @@
 class TINYXML2_LIB XMLConstHandle

 {

 public:

-    XMLConstHandle( const XMLNode* node )											{

-        _node = node;

+    XMLConstHandle( const XMLNode* node ) : _node( node ) {

     }

-    XMLConstHandle( const XMLNode& node )											{

-        _node = &node;

+    XMLConstHandle( const XMLNode& node ) : _node( &node ) {

     }

-    XMLConstHandle( const XMLConstHandle& ref )										{

-        _node = ref._node;

+    XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {

     }

 

     XMLConstHandle& operator=( const XMLConstHandle& ref )							{

@@ -2252,6 +2247,10 @@
     bool _restrictedEntityFlag[ENTITY_RANGE];

 

     DynArray< char, 20 > _buffer;

+

+    // Prohibit cloning, intentionally not implemented

+    XMLPrinter( const XMLPrinter& );

+    XMLPrinter& operator=( const XMLPrinter& );

 };

 

 

diff --git a/xmltest.cpp b/xmltest.cpp
index 59724f7..1c07faa 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -2017,6 +2017,8 @@
     {

         struct TestUtil: XMLVisitor

         {

+            TestUtil() : str() {}

+

             void TestParseError(const char *testString, const char *docStr, XMLError expected_error, int expectedLine)

             {

                 XMLDocument doc;