[Bug c++/88543] New: ICE template function specialization with auto returning tipe

archivio.rp at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Dec 18 17:41:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88543

            Bug ID: 88543
           Summary: ICE template function specialization with auto
                    returning tipe
           Product: gcc
           Version: 7.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: archivio.rp at gmail dot com
  Target Milestone: ---

I was simply testing the templates specialization for a function in order to
convert a string into a number. The following code should produce an error,
while the compiler crashes with a segmentation error:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;


template<typename Type>
        Type to_number(const string& str) {
                Type v;
                stringstream buff(str);
                buff >> v;
                return v;
        }

// Specializations
template<> int to_number(const string& str) { return stoi(str); }
template<> auto to_number(const string& str) { return stof(str); }
...

as shown here:
-------------------------------
toNumber.cc: In function ‘Type to_number(const string&) [with Type = auto]’:
toNumber.cc:18:66: internal compiler error: Segmentation fault
 template<> auto to_number(const string& str) { return stof(str); }
                                                                  ^
Please submit a full bug report,
with preprocessed source if appropriate.
-----------------------------------------------

I have compiled the code with different versions:

gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
gcc version 7.4.0 (Debian 7.4.0-1)
gcc version 7.3.0 (Windows - 10 + Cynwin)
gcc version 8.2.0 (Debian 8.2.0-12)

and only the last one works correctly.


More information about the Gcc-bugs mailing list