--- src/cxxopts.hpp.orig	2017-08-10 06:38:49.000000000 -0400
+++ src/cxxopts.hpp	2017-08-14 15:16:39.087376955 -0400
@@ -285,6 +285,8 @@
     {
     }
 
+    ~OptionException() throw() { }
+
     virtual const char*
     what() const noexcept
     {
@@ -471,11 +473,15 @@
       standard_value()
       : m_result(std::make_shared<T>())
       , m_store(m_result.get())
+      , m_default(false)
+      , m_implicit(false)
       {
       }
 
       standard_value(T* t)
       : m_store(t)
+      , m_default(false)
+      , m_implicit(false)
       {
       }
 
@@ -557,9 +563,9 @@
       protected:
       std::shared_ptr<T> m_result;
       T* m_store;
-      bool m_default = false;
+      bool m_default;
       std::string m_default_value;
-      bool m_implicit = false;
+      bool m_implicit;
       std::string m_implicit_value;
     };
   }
@@ -743,7 +749,7 @@
 
     inline
     std::string
-    help(const std::vector<std::string>& groups = {""}) const;
+    help(const std::vector<std::string>& groups = std::vector<std::string>({""})) const;
 
     inline
     const std::vector<std::string>
@@ -1304,7 +1310,7 @@
   std::shared_ptr<OptionDetails> details
 )
 {
-  auto in = m_options.emplace(option, details);
+  auto in = m_options.insert(make_pair(option, std::move(details)));
 
   if (!in.second)
   {
