std :: tupleで個々の値を抽出/出力するにはどうすればよいですか?GDB:std :: tupleから値を抽出するには
ここには、test.ccという名前のファイルのサンプルプログラムがあります。
#include <tuple>
#include <iostream>
using namespace std;
int main() {
auto t = make_tuple(111, 222);
cout << std::get<0>(t) << endl
<< std::get<1>(t) << endl;
return 0;
}
GDBで
g++ --std=c++11 -g test.cc
それをコンパイルし実行して
gdb --args ./a.out
...
(gdb) start
Temporary breakpoint 1 at 0x400836: file test.cc, line 7.
Starting program: /home/fmlheureux/a.out
Temporary breakpoint 1, main() at test.cc:7
7 auto t = make_tuple(111, 222);
(gdb) n
9 << std::get<1>(t) << endl;
(gdb) p t
$1 = std::tuple containing = {[1] = 111, [2] = 222}
は最後のコマンドは、全体としてタプルを印刷。個々の値をどのように抽出できますか?私の純粋な試みは失敗する。
(gdb) p get<0>(t)
No symbol "get<0>" in current context.
(gdb) p std::get<0>(t)
No symbol "get<0>" in namespace "std".
私の解決策は、 'tuple'の代わりに' struct'を使うことです。 gdbはそれを処理できます。もちろん、実際にはgdbはタプルアクセスをサポートする必要があります... – TheJJ