In this tutorial we learn how combinations of RVecs can be built.
Author: Stefan Wunsch
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Tuesday, March 19, 2024 at 07:22 PM.
The starting point are two collections and we want to calculate the result of combinations of the elements.
ROOT::RVecD v1{1., 2., 3.};
ROOT::RVecD v2{-4., -5.};
To get the indices, which result in all combinations, you can call the following helper. Note that you can also pass the size of the vectors directly.
auto idx = Combinations(v1, v2);
input_line_52:2:2: error: Syntax error auto idx = Combinations(v1, v2); ^ FunctionDecl 0x7f75f0e80e48 <input_line_52:1:1, line:4:1> line:1:6 __cling_Un1Qu320 'void (void *)' |-ParmVarDecl 0x7f75f0e80d90 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7f75f0e81280 <col:43, line:4:1> | |-DeclStmt 0x7f75f0e81260 <line:2:2, col:33> | | `-VarDecl 0x7f75f0e80f60 <col:2, col:32> col:7 idx 'auto' cinit | | `-CallExpr 0x7f75f0e81230 <col:13, col:32> '<dependent type>' | | |-DeclRefExpr 0x7f75f0e811b0 <col:13> '<dependent type>' lvalue Var 0x7f75f0e810d8 'Combinations' '<dependent type>' | | |-DeclRefExpr 0x7f75f0e811f0 <col:26> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b87e90 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-DeclRefExpr 0x7f75f0e81210 <col:30> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b94268 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | `-NullStmt 0x7f75f0e81278 <line:3:1> |-AnnotateAttr 0x7f75f0e81038 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7f75f0e81140 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>
Next, the respective elements can be taken via the computed indices.
auto c1 = Take(v1, idx[0]);
auto c2 = Take(v2, idx[1]);
input_line_53:2:2: error: Syntax error auto c1 = Take(v1, idx[0]); ^ FunctionDecl 0x7f75f22b99a8 <input_line_53:1:1, line:5:1> line:1:6 __cling_Un1Qu321 'void (void *)' |-ParmVarDecl 0x7f75f22b98f0 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7f75f22ba390 <col:43, line:5:1> | |-DeclStmt 0x7f75f22b9f00 <line:2:2, col:28> | | `-VarDecl 0x7f75f22b9ac0 <col:2, col:27> col:7 c1 'auto' cinit | | `-CallExpr 0x7f75f22b9ed0 <col:12, col:27> '<dependent type>' | | |-DeclRefExpr 0x7f75f22b9d10 <col:12> '<dependent type>' lvalue Var 0x7f75f22b9c38 'Take' '<dependent type>' | | |-DeclRefExpr 0x7f75f22b9d50 <col:17> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b87e90 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-ArraySubscriptExpr 0x7f75f22b9eb0 <col:21, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7f75f22b9e50 <col:21> '<dependent type>' lvalue Var 0x7f75f22b9d78 'idx' '<dependent type>' | | `-IntegerLiteral 0x7f75f22b9e90 <col:25> 'int' 0 | |-DeclStmt 0x7f75f22ba370 <line:3:1, col:27> | | `-VarDecl 0x7f75f22b9f60 <col:1, col:26> col:6 c2 'auto' cinit | | `-CallExpr 0x7f75f22ba340 <col:11, col:26> '<dependent type>' | | |-DeclRefExpr 0x7f75f22ba180 <col:11> '<dependent type>' lvalue Var 0x7f75f22ba0a8 'Take' '<dependent type>' | | |-DeclRefExpr 0x7f75f22ba1c0 <col:16> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b94268 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-ArraySubscriptExpr 0x7f75f22ba320 <col:20, col:25> '<dependent type>' lvalue | | |-DeclRefExpr 0x7f75f22ba2c0 <col:20> '<dependent type>' lvalue Var 0x7f75f22ba1e8 'idx' '<dependent type>' | | `-IntegerLiteral 0x7f75f22ba300 <col:24> 'int' 1 | `-NullStmt 0x7f75f22ba388 <line:4:1> |-AnnotateAttr 0x7f75f22b9b98 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22b9ca0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22b9de0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22ba038 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22ba110 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7f75f22ba250 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>
Finally, you can perform any set of operations conveniently.
auto v3 = c1 * c2;
std::cout << "Combinations of " << v1 << " and " << v2 << ":" << std::endl;
for(size_t i=0; i<v3.size(); i++) {
std::cout << c1[i] << " * " << c2[i] << " = " << v3[i] << std::endl;
}
std::cout << std::endl;
input_line_54:2:2: error: Syntax error auto v3 = c1 * c2; ^ FunctionDecl 0x7f75f22ba500 <input_line_54:1:1, line:10:1> line:1:6 __cling_Un1Qu322 'void (void *)' |-ParmVarDecl 0x7f75f22ba448 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7f75f22ddc50 <col:43, line:10:1> | |-DeclStmt 0x7f75f22bab78 <line:2:2, col:19> | | `-VarDecl 0x7f75f22ba618 <col:2, col:17> col:7 used v3 'auto' cinit | | `-CXXOperatorCallExpr 0x7f75f22bab40 <col:12, col:17> '<dependent type>' '*' | | |-UnresolvedLookupExpr 0x7f75f22ba8f0 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x60693b0 0x6839950 0x6839e48 0x683a348 0x683a910 0x683aee0 0x683b4b0 0x61760a8 0x61765a8 0x6198618 0x6198be0 0x61991b0 0x6199780 0x6199c88 0x683bac0 0x683c040 0x683c650 0x683cc60 0x683d270 0x683d7b8 0x61d80a8 0x61d85c0 0x61d9310 0x61d9d48 0x61da260 0x61dafb0 0x61db9f8 0x61dbf10 0x61dcc60 0x61dd6a8 0x61ddbc0 0x61de910 0x61df150 0x61df670 0x61e03c0 0x61e0c00 0x61e1120 0x61e1e70 0x6283cb0 0x62840d0 0x62844f0 0x64e30a0 0x64e2880 0x64e2c90 0x64e65d0 0x64e6860 0x64e6ae8 0x64e6d68 0x6514a08 0x6521c80 0x6523600 0x7f75f07cb5a8 0x7f75f07cfb78 0x7f75f07d06c0 0x7f75f07d7010 0x55e6378 0x55e6930 0x55e6e68 0x5afe7f8 0x5aff490 0x5affef8 0x5b00958 0x5b01448 0x5bac4c0 0x5bacf20 0x5bad920 | | |-DeclRefExpr 0x7f75f22ba790 <col:12> '<dependent type>' lvalue Var 0x7f75f22ba688 'c1' '<dependent type>' | | `-DeclRefExpr 0x7f75f22ba8b0 <col:17> '<dependent type>' lvalue Var 0x7f75f22ba7d8 'c2' '<dependent type>' | |-CXXOperatorCallExpr 0x7f75f22d9270 <line:4:1, col:71> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7f75f22d9258 <col:63> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7f75f22d9130 <col:63> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x88d03b8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-CXXOperatorCallExpr 0x7f75f22d2b78 <col:1, col:59> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | |-ImplicitCastExpr 0x7f75f22d2b60 <col:56> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | `-DeclRefExpr 0x7f75f22d2b40 <col:56> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7f75f22c06e8 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | |-CXXOperatorCallExpr 0x7f75f22d06a8 <col:1, col:53> 'std::ostream':'std::basic_ostream<char>' lvalue '<<' adl | | | | |-ImplicitCastExpr 0x7f75f22d0690 <col:50> 'std::ostream &(*)(std::ostream &, const RVec<double> &)' <FunctionToPointerDecay> | | | | | `-DeclRefExpr 0x7f75f22d0670 <col:50> 'std::ostream &(std::ostream &, const RVec<double> &)' lvalue Function 0x7f75f22cb618 'operator<<' 'std::ostream &(std::ostream &, const RVec<double> &)' | | | | |-CXXOperatorCallExpr 0x7f75f22cdcc8 <col:1, col:42> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | |-ImplicitCastExpr 0x7f75f22cdcb0 <col:39> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | `-DeclRefExpr 0x7f75f22cdc90 <col:39> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7f75f22c06e8 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | |-CXXOperatorCallExpr 0x7f75f22cb7f0 <col:1, col:36> 'std::ostream':'std::basic_ostream<char>' lvalue '<<' adl | | | | | | |-ImplicitCastExpr 0x7f75f22cb7d8 <col:33> 'std::ostream &(*)(std::ostream &, const RVec<double> &)' <FunctionToPointerDecay> | | | | | | | `-DeclRefExpr 0x7f75f22cb740 <col:33> 'std::ostream &(std::ostream &, const RVec<double> &)' lvalue Function 0x7f75f22cb618 'operator<<' 'std::ostream &(std::ostream &, const RVec<double> &)' | | | | | | |-CXXOperatorCallExpr 0x7f75f22c6920 <col:1, col:14> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | | | |-ImplicitCastExpr 0x7f75f22c6908 <col:11> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | | | `-DeclRefExpr 0x7f75f22c5d20 <col:11> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7f75f22c06e8 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | | | |-DeclRefExpr 0x7f75f22babe0 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | `-ImplicitCastExpr 0x7f75f22c5d08 <col:14> 'const char *' <ArrayToPointerDecay> | | | | | | | `-StringLiteral 0x7f75f22bac10 <col:14> 'const char[17]' lvalue "Combinations of " | | | | | | `-ImplicitCastExpr 0x7f75f22cb728 <col:36> 'const RVec<double>':'const ROOT::VecOps::RVec<double>' lvalue <NoOp> | | | | | | `-DeclRefExpr 0x7f75f22c6958 <col:36> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b87e90 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | | | | `-ImplicitCastExpr 0x7f75f22cdc78 <col:42> 'const char *' <ArrayToPointerDecay> | | | | | `-StringLiteral 0x7f75f22cb828 <col:42> 'const char[6]' lvalue " and " | | | | `-ImplicitCastExpr 0x7f75f22d0658 <col:53> 'const RVec<double>':'const ROOT::VecOps::RVec<double>' lvalue <NoOp> | | | | `-DeclRefExpr 0x7f75f22cdd00 <col:53> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x8b94268 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | | `-ImplicitCastExpr 0x7f75f22d2b28 <col:59> 'const char *' <ArrayToPointerDecay> | | | `-StringLiteral 0x7f75f22d06e0 <col:59> 'const char[2]' lvalue ":" | | `-ImplicitCastExpr 0x7f75f22d9118 <col:66, col:71> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7f75f22d89f8 <col:66, col:71> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7f75f22d80c0 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x559b670 'endl') | |-ForStmt 0x7f75f22dbd70 <line:5:1, line:7:1> | | |-DeclStmt 0x7f75f22d93c0 <line:5:5, col:15> | | | `-VarDecl 0x7f75f22d9300 <col:5, col:14> col:12 used i 'size_t':'unsigned long' cinit | | | `-ImplicitCastExpr 0x7f75f22d9388 <col:14> 'size_t':'unsigned long' <IntegralCast> | | | `-IntegerLiteral 0x7f75f22d9368 <col:14> 'int' 0 | | |-<<<NULL>>> | | |-CXXOperatorCallExpr 0x7f75f22da3d8 <col:17, col:27> '<dependent type>' '<' | | | |-UnresolvedLookupExpr 0x7f75f22da170 <col:18> '<overloaded function type>' lvalue (ADL) = 'operator<' 0x4b3d288 0x4b3da88 0x4b3e2c8 0x4b6dd20 0x6069bd0 0x6072190 0x682f658 0x682fc10 0x68301e0 0x6178790 0x4ccdab8 0x4d86358 0x4d87850 0x4d8fa28 0x4d8fff0 0x5049f90 0x504a568 0x504ad00 0x5067db8 0x50684c8 0x5068ad8 0x50bda80 0x515c8f0 0x5232bc0 0x5236f00 0x5237380 0x5239300 0x5239e88 0x53ca2f0 0x55488f8 0x55494c8 0x566d7e0 0x566e490 0x566ef30 0x5296648 0x5296d48 0x5297288 0x52a35c0 0x52a3b68 0x52a3fc0 0x571c208 0x571c918 0x572fab0 0x5759b80 0x57acc88 0x582f180 0x58a5d40 0x58b5d50 0x58e8c38 0x59aadd8 0x5dd8868 0x5dd9d20 0x5ddbce0 0x5dddca0 0x5ddf2e0 0x5de0920 0x5de1f60 0x59d97f0 0x59eba90 0x5b21008 0x5b21c70 0x5b226d8 0x5b23138 0x5b23c28 0x5bbf3c0 0x5bbfdc0 0x5bc07c0 0x5bdcdf8 0x5bdd360 | | | |-DeclRefExpr 0x7f75f22d93d8 <col:17> 'size_t':'unsigned long' lvalue Var 0x7f75f22d9300 'i' 'size_t':'unsigned long' | | | `-CallExpr 0x7f75f22d9480 <col:19, col:27> '<dependent type>' | | | `-CXXDependentScopeMemberExpr 0x7f75f22d9438 <col:19, col:22> '<dependent type>' lvalue .size | | | `-DeclRefExpr 0x7f75f22d93f8 <col:19> 'auto' lvalue Var 0x7f75f22ba618 'v3' 'auto' | | |-UnaryOperator 0x7f75f22da430 <col:30, col:31> 'size_t':'unsigned long' postfix '++' | | | `-DeclRefExpr 0x7f75f22da410 <col:30> 'size_t':'unsigned long' lvalue Var 0x7f75f22d9300 'i' 'size_t':'unsigned long' | | `-CompoundStmt 0x7f75f22dbd58 <col:35, line:7:1> | | `-CXXOperatorCallExpr 0x7f75f22dbd20 <line:6:5, col:68> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7f75f22db9e0 <col:60> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | |-CXXOperatorCallExpr 0x7f75f22db940 <col:5, col:58> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7f75f22db600 <col:51> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | |-CXXOperatorCallExpr 0x7f75f22db568 <col:5, col:45> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7f75f22db228 <col:42> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | |-CXXOperatorCallExpr 0x7f75f22db1d0 <col:5, col:40> '<dependent type>' '<<' | | | | | |-UnresolvedLookupExpr 0x7f75f22dae90 <col:33> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | |-CXXOperatorCallExpr 0x7f75f22dacf8 <col:5, col:27> '<dependent type>' '<<' | | | | | | |-UnresolvedLookupExpr 0x7f75f22da9b8 <col:24> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | |-CXXOperatorCallExpr 0x7f75f22da960 <col:5, col:22> '<dependent type>' '<<' | | | | | | | |-UnresolvedLookupExpr 0x7f75f22da620 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | | |-DeclRefExpr 0x7f75f22da498 <col:5, col:10> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | `-ArraySubscriptExpr 0x7f75f22da600 <col:18, col:22> '<dependent type>' lvalue | | | | | | | |-DeclRefExpr 0x7f75f22da5a0 <col:18> '<dependent type>' lvalue Var 0x7f75f22da4d0 'c1' '<dependent type>' | | | | | | | `-DeclRefExpr 0x7f75f22da5e0 <col:21> 'size_t':'unsigned long' lvalue Var 0x7f75f22d9300 'i' 'size_t':'unsigned long' | | | | | | `-StringLiteral 0x7f75f22da998 <col:27> 'const char[4]' lvalue " * " | | | | | `-ArraySubscriptExpr 0x7f75f22dae70 <col:36, col:40> '<dependent type>' lvalue | | | | | |-DeclRefExpr 0x7f75f22dae10 <col:36> '<dependent type>' lvalue Var 0x7f75f22dad38 'c2' '<dependent type>' | | | | | `-DeclRefExpr 0x7f75f22dae50 <col:39> 'size_t':'unsigned long' lvalue Var 0x7f75f22d9300 'i' 'size_t':'unsigned long' | | | | `-StringLiteral 0x7f75f22db208 <col:45> 'const char[4]' lvalue " = " | | | `-ArraySubscriptExpr 0x7f75f22db5e0 <col:54, col:58> '<dependent type>' lvalue | | | |-DeclRefExpr 0x7f75f22db5a0 <col:54> 'auto' lvalue Var 0x7f75f22ba618 'v3' 'auto' | | | `-DeclRefExpr 0x7f75f22db5c0 <col:57> 'size_t':'unsigned long' lvalue Var 0x7f75f22d9300 'i' 'size_t':'unsigned long' | | `-UnresolvedLookupExpr 0x7f75f22db998 <col:63, col:68> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x559b670 | |-CXXOperatorCallExpr 0x7f75f22ddbe0 <line:8:1, col:19> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7f75f22ddbc8 <col:11> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7f75f22ddba8 <col:11> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x88d03b8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-DeclRefExpr 0x7f75f22dbdf8 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | `-ImplicitCastExpr 0x7f75f22ddb90 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7f75f22ddb58 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7f75f22d80c0 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x559b670 'endl') | `-NullStmt 0x7f75f22ddc48 <line:9:1> |-AnnotateAttr 0x7f75f22ba6f0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22ba840 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22da538 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7f75f22dada0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>
However, if you want to compute operations on unique combinations of a single RVec, you can perform this as follows.
Get the indices of unique triples for the given vector.
ROOT::RVecD v4{1., 2., 3., 4.};
auto idx2 = Combinations(v4, 3);
input_line_55:3:1: error: Syntax error auto idx2 = Combinations(v4, 3); ^ FunctionDecl 0x7f75f22ef9a0 <input_line_55:1:1, line:5:1> line:1:6 __cling_Un1Qu323 'void (void *)' |-ParmVarDecl 0x7f75f22ef8e8 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7f75f22f0100 <col:43, line:5:1> | |-DeclStmt 0x7f75f22efd80 <line:2:2, col:32> | | `-VarDecl 0x7f75f22efac0 <col:2, col:31> col:14 used v4 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' listinit destroyed | | `-ExprWithCleanups 0x7f75f22efd48 <col:14, col:31> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-CXXConstructExpr 0x7f75f22efd18 <col:14, col:31> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' 'void (std::initializer_list<double>)' list std::initializer_list | | `-CXXStdInitializerListExpr 0x7f75f22efd00 <col:16, col:31> 'std::initializer_list<double>':'std::initializer_list<double>' | | `-MaterializeTemporaryExpr 0x7f75f22efce8 <col:16, col:31> 'const double[4]' xvalue | | `-InitListExpr 0x7f75f22efc88 <col:16, col:31> 'const double[4]' | | |-FloatingLiteral 0x7f75f22efb28 <col:17> 'double' 1.000000e+00 | | |-FloatingLiteral 0x7f75f22efb48 <col:21> 'double' 2.000000e+00 | | |-FloatingLiteral 0x7f75f22efb68 <col:25> 'double' 3.000000e+00 | | `-FloatingLiteral 0x7f75f22efb88 <col:29> 'double' 4.000000e+00 | |-DeclStmt 0x7f75f22f00e0 <line:3:1, col:32> | | `-VarDecl 0x7f75f22efde0 <col:1, col:31> col:6 idx2 'auto' cinit | | `-CallExpr 0x7f75f22f00b0 <col:13, col:31> '<dependent type>' | | |-DeclRefExpr 0x7f75f22f0030 <col:13> '<dependent type>' lvalue Var 0x7f75f22eff58 'Combinations' '<dependent type>' | | |-DeclRefExpr 0x7f75f22f0070 <col:26> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x7f75f22efac0 'v4' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-IntegerLiteral 0x7f75f22f0090 <col:30> 'int' 3 | `-NullStmt 0x7f75f22f00f8 <line:4:1> |-AnnotateAttr 0x7f75f22efeb8 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7f75f22effc0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>
Take the elements and compute any operation on the returned collections.
auto c3 = Take(v4, idx2[0]);
auto c4 = Take(v4, idx2[1]);
auto c5 = Take(v4, idx2[2]);
auto v5 = c3 * c4 * c5;
std::cout << "Unique triples of " << v4 << ":" << std::endl;
for(size_t i=0; i<v4.size(); i++) {
std::cout << c3[i] << " * " << c4[i] << " * " << c5[i] << " = " << v5[i] << std::endl;
}
std::cout << std::endl;
input_line_56:2:2: error: Syntax error auto c3 = Take(v4, idx2[0]); ^ FunctionDecl 0x7f75f22f0250 <input_line_56:1:1, line:14:1> line:1:6 __cling_Un1Qu324 'void (void *)' |-ParmVarDecl 0x7f75f22f0198 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7f75f2381bf0 <col:43, line:14:1> | |-DeclStmt 0x7f75f22f08b0 <line:2:2, col:29> | | `-VarDecl 0x7f75f22f0368 <col:2, col:28> col:7 used c3 'auto' cinit | | `-CallExpr 0x7f75f22f0880 <col:12, col:28> '<dependent type>' | | |-DeclRefExpr 0x7f75f22f05c0 <col:12> '<dependent type>' lvalue Var 0x7f75f22f04e8 'Take' '<dependent type>' | | |-DeclRefExpr 0x7f75f22f06e0 <col:17> '<dependent type>' lvalue Var 0x7f75f22f0608 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7f75f22f0860 <col:21, col:27> '<dependent type>' lvalue | | |-DeclRefExpr 0x7f75f22f0800 <col:21> '<dependent type>' lvalue Var 0x7f75f22f0728 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7f75f22f0840 <col:26> 'int' 0 | |-DeclStmt 0x7f75f22f0e20 <line:3:1, col:28> | | `-VarDecl 0x7f75f22f0910 <col:1, col:27> col:6 used c4 'auto' cinit | | `-CallExpr 0x7f75f22f0df0 <col:11, col:27> '<dependent type>' | | |-DeclRefExpr 0x7f75f22f0b30 <col:11> '<dependent type>' lvalue Var 0x7f75f22f0a58 'Take' '<dependent type>' | | |-DeclRefExpr 0x7f75f22f0c50 <col:16> '<dependent type>' lvalue Var 0x7f75f22f0b78 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7f75f22f0dd0 <col:20, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7f75f22f0d70 <col:20> '<dependent type>' lvalue Var 0x7f75f22f0c98 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7f75f22f0db0 <col:25> 'int' 1 | |-DeclStmt 0x7f75f22f1390 <line:4:1, col:28> | | `-VarDecl 0x7f75f22f0e80 <col:1, col:27> col:6 used c5 'auto' cinit | | `-CallExpr 0x7f75f22f1360 <col:11, col:27> '<dependent type>' | | |-DeclRefExpr 0x7f75f22f10a0 <col:11> '<dependent type>' lvalue Var 0x7f75f22f0fc8 'Take' '<dependent type>' | | |-DeclRefExpr 0x7f75f22f11c0 <col:16> '<dependent type>' lvalue Var 0x7f75f22f10e8 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7f75f22f1340 <col:20, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7f75f22f12e0 <col:20> '<dependent type>' lvalue Var 0x7f75f22f1208 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7f75f22f1320 <col:25> 'int' 2 | |-DeclStmt 0x7f75f22f1a28 <line:6:1, col:23> | | `-VarDecl 0x7f75f22f13f0 <col:1, col:21> col:6 used v5 'auto' cinit | | `-CXXOperatorCallExpr 0x7f75f22f19f0 <col:11, col:21> '<dependent type>' '*' | | |-UnresolvedLookupExpr 0x7f75f22f17a0 <col:19> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x60693b0 0x6839950 0x6839e48 0x683a348 0x683a910 0x683aee0 0x683b4b0 0x61760a8 0x61765a8 0x6198618 0x6198be0 0x61991b0 0x6199780 0x6199c88 0x683bac0 0x683c040 0x683c650 0x683cc60 0x683d270 0x683d7b8 0x61d80a8 0x61d85c0 0x61d9310 0x61d9d48 0x61da260 0x61dafb0 0x61db9f8 0x61dbf10 0x61dcc60 0x61dd6a8 0x61ddbc0 0x61de910 0x61df150 0x61df670 0x61e03c0 0x61e0c00 0x61e1120 0x61e1e70 0x6283cb0 0x62840d0 0x62844f0 0x64e30a0 0x64e2880 0x64e2c90 0x64e65d0 0x64e6860 0x64e6ae8 0x64e6d68 0x6514a08 0x6521c80 0x6523600 0x7f75f07cb5a8 0x7f75f07cfb78 0x7f75f07d06c0 0x7f75f07d7010 0x55e6378 0x55e6930 0x55e6e68 0x5afe7f8 0x5aff490 0x5affef8 0x5b00958 0x5b01448 0x5bac4c0 0x5bacf20 0x5bad920 | | |-CXXOperatorCallExpr 0x7f75f22f1728 <col:11, col:16> '<dependent type>' '*' | | | |-UnresolvedLookupExpr 0x7f75f22f14d8 <col:14> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x60693b0 0x6839950 0x6839e48 0x683a348 0x683a910 0x683aee0 0x683b4b0 0x61760a8 0x61765a8 0x6198618 0x6198be0 0x61991b0 0x6199780 0x6199c88 0x683bac0 0x683c040 0x683c650 0x683cc60 0x683d270 0x683d7b8 0x61d80a8 0x61d85c0 0x61d9310 0x61d9d48 0x61da260 0x61dafb0 0x61db9f8 0x61dbf10 0x61dcc60 0x61dd6a8 0x61ddbc0 0x61de910 0x61df150 0x61df670 0x61e03c0 0x61e0c00 0x61e1120 0x61e1e70 0x6283cb0 0x62840d0 0x62844f0 0x64e30a0 0x64e2880 0x64e2c90 0x64e65d0 0x64e6860 0x64e6ae8 0x64e6d68 0x6514a08 0x6521c80 0x6523600 0x7f75f07cb5a8 0x7f75f07cfb78 0x7f75f07d06c0 0x7f75f07d7010 0x55e6378 0x55e6930 0x55e6e68 0x5afe7f8 0x5aff490 0x5affef8 0x5b00958 0x5b01448 0x5bac4c0 0x5bacf20 0x5bad920 | | | |-DeclRefExpr 0x7f75f22f1458 <col:11> 'auto' lvalue Var 0x7f75f22f0368 'c3' 'auto' | | | `-DeclRefExpr 0x7f75f22f1498 <col:16> 'auto' lvalue Var 0x7f75f22f0910 'c4' 'auto' | | `-DeclRefExpr 0x7f75f22f1760 <col:21> 'auto' lvalue Var 0x7f75f22f0e80 'c5' 'auto' | |-CXXOperatorCallExpr 0x7f75f22f4be8 <line:8:1, col:56> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7f75f22f48a8 <col:48> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | |-CXXOperatorCallExpr 0x7f75f22f4808 <col:1, col:44> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7f75f22f44c8 <col:41> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | |-CXXOperatorCallExpr 0x7f75f22f4470 <col:1, col:38> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7f75f22f4130 <col:35> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | |-CXXOperatorCallExpr 0x7f75f22f3fd8 <col:1, col:14> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | |-ImplicitCastExpr 0x7f75f22f3fc0 <col:11> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | `-DeclRefExpr 0x7f75f22f3fa0 <col:11> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7f75f22c06e8 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | |-DeclRefExpr 0x7f75f22f1a90 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | | | | `-ImplicitCastExpr 0x7f75f22f3f88 <col:14> 'const char *' <ArrayToPointerDecay> | | | | | `-StringLiteral 0x7f75f22f1b38 <col:14> 'const char[19]' lvalue "Unique triples of " | | | | `-DeclRefExpr 0x7f75f22f40f0 <col:38> '<dependent type>' lvalue Var 0x7f75f22f4018 'v4' '<dependent type>' | | | `-StringLiteral 0x7f75f22f44a8 <col:44> 'const char[2]' lvalue ":" | | `-UnresolvedLookupExpr 0x7f75f22f4860 <col:51, col:56> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x559b670 | |-ForStmt 0x7f75f22f7050 <line:9:1, line:11:1> | | |-DeclStmt 0x7f75f22f4cf8 <line:9:5, col:15> | | | `-VarDecl 0x7f75f22f4c38 <col:5, col:14> col:12 used i 'size_t':'unsigned long' cinit | | | `-ImplicitCastExpr 0x7f75f22f4cc0 <col:14> 'size_t':'unsigned long' <IntegralCast> | | | `-IntegerLiteral 0x7f75f22f4ca0 <col:14> 'int' 0 | | |-<<<NULL>>> | | |-CXXOperatorCallExpr 0x7f75f22f5120 <col:17, col:27> '<dependent type>' '<' | | | |-UnresolvedLookupExpr 0x7f75f22f4eb8 <col:18> '<overloaded function type>' lvalue (ADL) = 'operator<' 0x4b3d288 0x4b3da88 0x4b3e2c8 0x4b6dd20 0x6069bd0 0x6072190 0x682f658 0x682fc10 0x68301e0 0x6178790 0x4ccdab8 0x4d86358 0x4d87850 0x4d8fa28 0x4d8fff0 0x5049f90 0x504a568 0x504ad00 0x5067db8 0x50684c8 0x5068ad8 0x50bda80 0x515c8f0 0x5232bc0 0x5236f00 0x5237380 0x5239300 0x5239e88 0x53ca2f0 0x55488f8 0x55494c8 0x566d7e0 0x566e490 0x566ef30 0x5296648 0x5296d48 0x5297288 0x52a35c0 0x52a3b68 0x52a3fc0 0x571c208 0x571c918 0x572fab0 0x5759b80 0x57acc88 0x582f180 0x58a5d40 0x58b5d50 0x58e8c38 0x59aadd8 0x5dd8868 0x5dd9d20 0x5ddbce0 0x5dddca0 0x5ddf2e0 0x5de0920 0x5de1f60 0x59d97f0 0x59eba90 0x5b21008 0x5b21c70 0x5b226d8 0x5b23138 0x5b23c28 0x5bbf3c0 0x5bbfdc0 0x5bc07c0 0x5bdcdf8 0x5bdd360 | | | |-DeclRefExpr 0x7f75f22f4d10 <col:17> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | | `-CallExpr 0x7f75f22f4e98 <col:19, col:27> '<dependent type>' | | | `-CXXDependentScopeMemberExpr 0x7f75f22f4e50 <col:19, col:22> '<dependent type>' lvalue .size | | | `-DeclRefExpr 0x7f75f22f4e10 <col:19> '<dependent type>' lvalue Var 0x7f75f22f4d38 'v4' '<dependent type>' | | |-UnaryOperator 0x7f75f22f5178 <col:30, col:31> 'size_t':'unsigned long' postfix '++' | | | `-DeclRefExpr 0x7f75f22f5158 <col:30> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | `-CompoundStmt 0x7f75f22f7038 <col:35, line:11:1> | | `-CXXOperatorCallExpr 0x7f75f22f7000 <line:10:5, col:86> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7f75f22f6cc0 <col:78> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | |-CXXOperatorCallExpr 0x7f75f22f6c20 <col:5, col:76> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7f75f22f68e0 <col:69> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | |-CXXOperatorCallExpr 0x7f75f22f6828 <col:5, col:63> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7f75f22f64e8 <col:60> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | |-CXXOperatorCallExpr 0x7f75f22f6490 <col:5, col:58> '<dependent type>' '<<' | | | | | |-UnresolvedLookupExpr 0x7f75f22f6150 <col:51> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | |-CXXOperatorCallExpr 0x7f75f22f60b8 <col:5, col:45> '<dependent type>' '<<' | | | | | | |-UnresolvedLookupExpr 0x7f75f22f5d78 <col:42> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | |-CXXOperatorCallExpr 0x7f75f22f5d20 <col:5, col:40> '<dependent type>' '<<' | | | | | | | |-UnresolvedLookupExpr 0x7f75f22f59e0 <col:33> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | | |-CXXOperatorCallExpr 0x7f75f22f5948 <col:5, col:27> '<dependent type>' '<<' | | | | | | | | |-UnresolvedLookupExpr 0x7f75f22f5608 <col:24> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | | | |-CXXOperatorCallExpr 0x7f75f22f55b0 <col:5, col:22> '<dependent type>' '<<' | | | | | | | | | |-UnresolvedLookupExpr 0x7f75f22f5270 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x4b6bd98 0x4b1c7d8 0x4b1c138 0x4b69358 0x4b695e0 0x4b69870 0x4b69b00 0x4b69d90 0x4b6a020 0x4b6a2b0 0x4b6a540 0x4b6a7d0 0x4b6aa60 0x4b6acf0 0x4b6af80 0x4b6b210 0x4b6b4a0 0x4b6b768 0x60593a8 0x605ba18 0x6062cb8 0x6063ba8 0x6071028 0x6071348 0x60837d8 0x60848d8 0x6085c18 0x6086fe8 0x6088328 0x6089668 0x608b710 0x62e4c38 0x62e6618 0x64c9428 0x504f3d0 0x506e788 0x549ec68 0x5548b10 0x5597678 0x5597d18 0x55983b8 0x5598a48 0x5599050 0x5599660 0x55a08d0 0x559a3e0 0x559a9f0 0x559b030 0x559f4b8 0x55e9570 0x52a1b70 0x57118f8 0x57b57c8 0x580c1b8 0x580d258 0x580e2d8 0x580f848 0x5810958 0x58119d8 0x58138f0 0x58149d0 0x59086c8 0x5941cd8 0x5914d58 0x5915cb8 0x5916c18 0x5917d98 0x5964f18 0x5918488 0x597ad78 0x59193e8 0x591a348 0x591b2a8 0x5922518 0x594b958 0x594df80 0x5950658 0x595b418 0x595e0e8 0x59618d8 0x596ea78 0x59715d0 0x59758f8 0x59782b8 0x5987ea8 0x598cc18 0x59918b8 0x5de35a0 0x5b13388 0x5b14020 0x5b14a88 0x5b154e8 0x5b15fd8 0x5bb7b00 0x5bb8560 0x5bb8f60 | | | | | | | | | |-DeclRefExpr 0x7f75f22f51e0 <col:5, col:10> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | | | `-ArraySubscriptExpr 0x7f75f22f5250 <col:18, col:22> '<dependent type>' lvalue | | | | | | | | | |-DeclRefExpr 0x7f75f22f5210 <col:18> 'auto' lvalue Var 0x7f75f22f0368 'c3' 'auto' | | | | | | | | | `-DeclRefExpr 0x7f75f22f5230 <col:21> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | | | | | | | `-StringLiteral 0x7f75f22f55e8 <col:27> 'const char[4]' lvalue " * " | | | | | | | `-ArraySubscriptExpr 0x7f75f22f59c0 <col:36, col:40> '<dependent type>' lvalue | | | | | | | |-DeclRefExpr 0x7f75f22f5980 <col:36> 'auto' lvalue Var 0x7f75f22f0910 'c4' 'auto' | | | | | | | `-DeclRefExpr 0x7f75f22f59a0 <col:39> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | | | | | `-StringLiteral 0x7f75f22f5d58 <col:45> 'const char[4]' lvalue " * " | | | | | `-ArraySubscriptExpr 0x7f75f22f6130 <col:54, col:58> '<dependent type>' lvalue | | | | | |-DeclRefExpr 0x7f75f22f60f0 <col:54> 'auto' lvalue Var 0x7f75f22f0e80 'c5' 'auto' | | | | | `-DeclRefExpr 0x7f75f22f6110 <col:57> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | | | `-StringLiteral 0x7f75f22f64c8 <col:63> 'const char[4]' lvalue " = " | | | `-ArraySubscriptExpr 0x7f75f22f68c0 <col:72, col:76> '<dependent type>' lvalue | | | |-DeclRefExpr 0x7f75f22f6860 <col:72> 'auto' lvalue Var 0x7f75f22f13f0 'v5' 'auto' | | | `-DeclRefExpr 0x7f75f22f68a0 <col:75> 'size_t':'unsigned long' lvalue Var 0x7f75f22f4c38 'i' 'size_t':'unsigned long' | | `-UnresolvedLookupExpr 0x7f75f22f6c78 <col:81, col:86> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x559b670 | |-CXXOperatorCallExpr 0x7f75f2381bb0 <line:12:1, col:19> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7f75f2381b98 <col:11> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7f75f2381b78 <col:11> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x88d03b8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-DeclRefExpr 0x7f75f22f70d8 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x582cf38 'cout' 'ostream':'std::basic_ostream<char>' | | `-ImplicitCastExpr 0x7f75f2381b60 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7f75f2381b28 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7f75f22d80c0 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x559b670 'endl') | `-NullStmt 0x7f75f2381be8 <line:13:1> |-AnnotateAttr 0x7f75f22f0440 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0550 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0670 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0790 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f09e8 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0ac0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0be0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0d00 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f0f58 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f1030 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f1150 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f1270 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7f75f22f4080 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7f75f22f4da0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>