https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90047
Bug ID: 90047
Summary: internal compiler error: in finish_expr_stmt, at
cp/semantics.c:680
Product: gcc
Version: 8.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: harriethijssen65 at gmail dot com
Target Milestone: ---
Created attachment 46142
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46142&action=edit
temporary compile file from COLIRU
Hit the above error with included code.
Interesting fact is that when commenting out struct Message_t (not required in
test code) does not generate this error. It is seemingly unrelated, but causes
the compiler to complain when this code is present.
Please do not comment on the semantics: the code is "dumbed down" to minimum
lines for clarity.
Thanks.
Code:
// This file can be also found using the Coliru command line: cat
/Archive2/56/3d8a97d31a1950/main.cpp
#include
#include
template
struct STR {
static constexpr const char* tag = TAG;
STR() {memset(&v, 0, sizeof(v));}
STR(T value) {operatorAssign(value);}
template ::value>* = nullptr>
T& operatorAssign(const T& rhs) {return v; }
T v;
};
typedef
class Message {
public:
enum severity_t {} ;
friend std::ostream& operator<< (std::ostream& os, const Message& message)
{os << message._severity << ": ";return os;}
severity_t _severity;
std::string _message;
} Message_t;
extern char const ctag1[] = "tag1";
int main() {
STR c1;
c1 = (char*)"abcdefghij";
}