I'm trying to initialize a std::map with an array of std::pair, but it
causes a sigsegv. I'm using GCC 3.4.6 on RHEL 4.4 x86_64.
My gdb backtrace, a snippet of stl_map.h, and my program are included
below. For better formatted display, see http://paste.collinslabs.com/?show=30.
Notice in particular the values of the parameters to the map
constructor and the insert_unique() function in frames #3 and #2,
respectively. Why is __first in the map constructor one thing, and
__first in the insert_unique function another?
1.
/* map.cpp */
2.
#include <iostream>
3.
#include <map>
4.
#include <string>
5.
#include <utility>
6.
#include <vector>
7.
8.
namespace {
9.
void f() {}
10.
void g() {}
11.
12.
typedef std::pair<std::string, void (*)()> mypair_t;
13.
14.
mypair_t pairs[] =
15.
{
16.
mypair_t("f", &f),
17.
mypair_t("g", &g)
18.
};
19.
}
20.
21.
int main()
22.
{
23.
std::map<std::string, void (*)()> mymap(pairs, pairs
+sizeof(pairs));
24.
}
25.
26.