title: Issue with Mingw file c++locale.h - Can I change the code?
body: <p>I am currently getting a build error. this error looks like this</p>
  
  <pre><code>C:/mingw64/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32/bits/c++locale.h: In function 'int std::__convert_from_v(int* const&amp;, char*, int, const char*, ...)':
  C:/mingw64/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32/bits/c++locale.h:74:48: error: expected primary-expression before ',' token
       const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  </code></pre>
  
  <p>Upon investigation I noticed the code in <code>C++Locale.h</code> looks like this</p>
  
  <pre><code>// Written by Benjamin Kosnik &lt;bkoz@redhat.com&gt;
  
  #ifndef _GLIBCXX_CXX_LOCALE_H
  #define _GLIBCXX_CXX_LOCALE_H 1
  
  #pragma GCC system_header
  
  #include &lt;clocale&gt;
  
  #define _GLIBCXX_NUM_CATEGORIES 0
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    typedef int*          __c_locale;
  
    // Convert numeric value of type double and long double to string and
    // return length of string.  If vsnprintf is available use it, otherwise
    // fall back to the unsafe vsprintf which, in general, can be dangerous
    // and should be avoided.
    inline int
    __convert_from_v(const __c_locale&amp;, char* __out,
             const int __size __attribute__((__unused__)),
             const char* __fmt, ...)
    {
      char* __old = std::setlocale(LC_NUMERIC, 0);
      char* __sav = 0;
      if (__builtin_strcmp(__old, "C"))
        {
      const size_t __len = __builtin_strlen(__old) + 1;
      __sav = new char[__len];
      __builtin_memcpy(__sav, __old, __len);
      std::setlocale(LC_NUMERIC, "C");
        }
  
      __builtin_va_list __args;
      __builtin_va_start(__args, __fmt);
  
  
  #ifdef _GLIBCXX_USE_C99
      const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
  #else
      const int __ret = __builtin_vsprintf(__out, __fmt, __args);
  #endif
  
      __builtin_va_end(__args);
  
      if (__sav)
        {
      std::setlocale(LC_NUMERIC, __sav);
      delete [] __sav;
        }
      return __ret;
    }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
  #endif
  </code></pre>
  
  <p>Now this error goes away If i change the parameter in the line</p>
  
  <pre><code>  inline int
    __convert_from_v(const __c_locale&amp;, char* __out,
             const int __size __attribute__((__unused__)),
             const char* __fmt, ...)
  </code></pre>
  
  <p>from <code>__out</code> to something else like <code>__aout</code>  or if I remove the inline keyword. I know i should not be making changes in the default imp. files . This file is in the folder</p>
  
  <pre><code>C:\mingw64\x86_64-w64-mingw32\include\c++\x86_64-w64-mingw32\bits
  </code></pre>
  
  <p>Any suggestions on what I could do to resolve this issue without making changes to the actual files of Mingw GCC 64 bit?</p>