http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57870
Bug ID: 57870
Summary: Internal compiler error in use of emplace
Product: gcc
Version: 4.7.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eyakubovich at gmail dot com
In the following code, S lacks a constructor that accepts an int. Subsequently,
g++ crashes on use of emplace:
#include <queue>
struct S {
int x;
friend bool operator<(S const&, S const&) { return false; }
};
int main() {
std::priority_queue<S> q;
q.emplace(1);
return 0;
}
A similar problem occurs with use of std::vector, however a correct error is
first issued:
#include <vector>
struct S {
int x;
};
int main() {
std::vector<S> q;
q.emplace(q.begin(), 1);
return 0;
}