std::ctype<char>::_M_widen_init() is a function authored by Jerry Quinn
<jlquinn@optonline.net>, which was added to libstdc++ with revision 74662 on
Dec 16, 2003 [1].

With permission from Jerry (thankfully received on Oct 9, 2012), we include a
copy of this function in the MADlib repository. The sole intention is to allow
compiling MADlib with recent versions of gcc while still keeping the runtime
dependencies limited to earlier versions of libstdc++. Technical details are
given in src/utils/libstdcxx-compatibility.cpp.

Revision 74662 of the libstdc++-v3 file include/bits/locale_facets.h, where
std::ctype<char>::_M_widen_init() has been copied from, also included the
following notice in the file header [2]:

// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
// Free Software Foundation, Inc.

// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING.  If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.

// As a special exception, you may use this file as part of a free software
// library without restriction.  Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License.  This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

Links:
[1] http://gcc.gnu.org/viewcvs?diff_format=h&view=revision&revision=74662
[2] http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/include/bits/locale_facets.h?diff_format=h&view=markup&pathrev=74662
