それはちょうどDebianは最終的に正しく物事を統合しているように見えるのUbuntu 17.04に
に動作します:
#include <map>
#include <utility>
#include <vector>
int main() {
std::vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
std::map<int,int> m;
m.insert(std::make_pair(0, 0));
m.insert(std::make_pair(1, -1));
m.insert(std::make_pair(2, -2));
}
コンパイル:
g++ -O0 -ggdb3 -o container.out -std=c++98 container.cpp
結果:
(gdb) p v
$1 = std::vector of length 3, capacity 4 = {0, 1, 2}
(gdb) p m
$2 = std::map with 3 elements = {[0] = 0, [1] = -1, [2] = -2}
我々がかなりプリンタがインストールされていることがわかります。
/usr/share/gcc-7/python/libstdcxx/v6/printers.py
が付属しています:プリンタは、ファイルによってproviededさ
global pretty-printers:
objfile /usr/lib/x86_64-linux-gnu/libstdc++.so.6 pretty-printers:
libstdc++-v6
std::map
std::vector
:行が含まれている
info pretty-printer
メインC++ライブラリパッケージlibstdc++6
は、GCCソースコードのlibstdc++-v3/python/libstdcxx
の下にあります。https://github.com/gcc-mirror/gcc/blob/gcc-6_3_0-release/libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py#L244
TODO:GDBが最終的なミステリーであることをGDBが見つけたのは、私のPythonパスにはありません:python -c "import sys; print('\n'.join(sys.path))"
なので、どこかにハードコード化する必要がありますか?
C++ライブラリの内部型とメンバ変数が変更され、Pythonモジュールが変更されていない可能性があります。 –
C++ソース、コンパイラオプションなど、より多くの情報を貼り付けてください。私はこれをUbuntu 12.04でテストしたところ、私にとってはうまくいきました。 – user1202136
私のためにFedora 17で動作します。 – Omnifarious