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 Wednesday, April 17, 2024 at 11:24 AM.
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 0x7ff618e74618 <input_line_52:1:1, line:4:1> line:1:6 __cling_Un1Qu320 'void (void *)' |-ParmVarDecl 0x7ff618e74560 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7ff618e74a50 <col:43, line:4:1> | |-DeclStmt 0x7ff618e74a30 <line:2:2, col:33> | | `-VarDecl 0x7ff618e74730 <col:2, col:32> col:7 idx 'auto' cinit | | `-CallExpr 0x7ff618e74a00 <col:13, col:32> '<dependent type>' | | |-DeclRefExpr 0x7ff618e74980 <col:13> '<dependent type>' lvalue Var 0x7ff618e748a8 'Combinations' '<dependent type>' | | |-DeclRefExpr 0x7ff618e749c0 <col:26> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x961df10 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-DeclRefExpr 0x7ff618e749e0 <col:30> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x962a2e8 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | `-NullStmt 0x7ff618e74a48 <line:3:1> |-AnnotateAttr 0x7ff618e74808 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7ff618e74910 <<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 0x7ff61a2c6e20 <input_line_53:1:1, line:5:1> line:1:6 __cling_Un1Qu321 'void (void *)' |-ParmVarDecl 0x7ff61a2c6d68 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7ff61a2c7810 <col:43, line:5:1> | |-DeclStmt 0x7ff61a2c7380 <line:2:2, col:28> | | `-VarDecl 0x7ff61a2c6f38 <col:2, col:27> col:7 c1 'auto' cinit | | `-CallExpr 0x7ff61a2c7350 <col:12, col:27> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2c7190 <col:12> '<dependent type>' lvalue Var 0x7ff61a2c70b8 'Take' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2c71d0 <col:17> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x961df10 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-ArraySubscriptExpr 0x7ff61a2c7330 <col:21, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7ff61a2c72d0 <col:21> '<dependent type>' lvalue Var 0x7ff61a2c71f8 'idx' '<dependent type>' | | `-IntegerLiteral 0x7ff61a2c7310 <col:25> 'int' 0 | |-DeclStmt 0x7ff61a2c77f0 <line:3:1, col:27> | | `-VarDecl 0x7ff61a2c73e0 <col:1, col:26> col:6 c2 'auto' cinit | | `-CallExpr 0x7ff61a2c77c0 <col:11, col:26> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2c7600 <col:11> '<dependent type>' lvalue Var 0x7ff61a2c7528 'Take' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2c7640 <col:16> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x962a2e8 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-ArraySubscriptExpr 0x7ff61a2c77a0 <col:20, col:25> '<dependent type>' lvalue | | |-DeclRefExpr 0x7ff61a2c7740 <col:20> '<dependent type>' lvalue Var 0x7ff61a2c7668 'idx' '<dependent type>' | | `-IntegerLiteral 0x7ff61a2c7780 <col:24> 'int' 1 | `-NullStmt 0x7ff61a2c7808 <line:4:1> |-AnnotateAttr 0x7ff61a2c7010 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2c7120 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2c7260 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2c74b8 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2c7590 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7ff61a2c76d0 <<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 0x7ff61a2c7980 <input_line_54:1:1, line:10:1> line:1:6 __cling_Un1Qu322 'void (void *)' |-ParmVarDecl 0x7ff61a2c78c8 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7ff61a2eb0d0 <col:43, line:10:1> | |-DeclStmt 0x7ff61a2c7ff8 <line:2:2, col:19> | | `-VarDecl 0x7ff61a2c7a98 <col:2, col:17> col:7 used v3 'auto' cinit | | `-CXXOperatorCallExpr 0x7ff61a2c7fc0 <col:12, col:17> '<dependent type>' '*' | | |-UnresolvedLookupExpr 0x7ff61a2c7d70 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x6b93730 0x7358120 0x7358618 0x7358b18 0x73590e0 0x73596b0 0x7359c80 0x6ca2348 0x6ca2848 0x6caf3a8 0x6caf970 0x6caff40 0x6cb0510 0x6cb0a18 0x735a290 0x735a810 0x735ae20 0x735b430 0x735ba40 0x735bf88 0x6d18948 0x6d18e60 0x6d19bb0 0x6d1a5e8 0x6d1ab00 0x6d1b850 0x6d1c298 0x6d1c7b0 0x6d1d500 0x6d1df48 0x6d1e460 0x6d1f1b0 0x6d1f9f0 0x6d1ff10 0x6d20c60 0x6d214a0 0x6d219c0 0x6d22710 0x6d9d800 0x6d9dc20 0x6d9e040 0x6ff19b0 0x6ff1190 0x6ff15a0 0x6ff4ec0 0x6ff5150 0x6ff53d8 0x6ff5658 0x7023f18 0x7031190 0x703f490 0x7ff6187aaed8 0x7ff6187af4a8 0x7ff6187afff0 0x7ff6187b6940 0x6102348 0x6102900 0x6102e38 0x66124e8 0x6613180 0x6613be8 0x6614648 0x6615138 0x66cb4f0 0x66cbf50 0x66cc950 | | |-DeclRefExpr 0x7ff61a2c7c10 <col:12> '<dependent type>' lvalue Var 0x7ff61a2c7b08 'c1' '<dependent type>' | | `-DeclRefExpr 0x7ff61a2c7d30 <col:17> '<dependent type>' lvalue Var 0x7ff61a2c7c58 'c2' '<dependent type>' | |-CXXOperatorCallExpr 0x7ff61a2e66f0 <line:4:1, col:71> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7ff61a2e66d8 <col:63> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7ff61a2e65b0 <col:63> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x935baa8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-CXXOperatorCallExpr 0x7ff61a2dfff8 <col:1, col:59> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | |-ImplicitCastExpr 0x7ff61a2dffe0 <col:56> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | `-DeclRefExpr 0x7ff61a2dffc0 <col:56> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7ff61a2cdb68 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | |-CXXOperatorCallExpr 0x7ff61a2ddb28 <col:1, col:53> 'std::ostream':'std::basic_ostream<char>' lvalue '<<' adl | | | | |-ImplicitCastExpr 0x7ff61a2ddb10 <col:50> 'std::ostream &(*)(std::ostream &, const RVec<double> &)' <FunctionToPointerDecay> | | | | | `-DeclRefExpr 0x7ff61a2ddaf0 <col:50> 'std::ostream &(std::ostream &, const RVec<double> &)' lvalue Function 0x7ff61a2d8a98 'operator<<' 'std::ostream &(std::ostream &, const RVec<double> &)' | | | | |-CXXOperatorCallExpr 0x7ff61a2db148 <col:1, col:42> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | |-ImplicitCastExpr 0x7ff61a2db130 <col:39> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | `-DeclRefExpr 0x7ff61a2db110 <col:39> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7ff61a2cdb68 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | |-CXXOperatorCallExpr 0x7ff61a2d8c70 <col:1, col:36> 'std::ostream':'std::basic_ostream<char>' lvalue '<<' adl | | | | | | |-ImplicitCastExpr 0x7ff61a2d8c58 <col:33> 'std::ostream &(*)(std::ostream &, const RVec<double> &)' <FunctionToPointerDecay> | | | | | | | `-DeclRefExpr 0x7ff61a2d8bc0 <col:33> 'std::ostream &(std::ostream &, const RVec<double> &)' lvalue Function 0x7ff61a2d8a98 'operator<<' 'std::ostream &(std::ostream &, const RVec<double> &)' | | | | | | |-CXXOperatorCallExpr 0x7ff61a2d3da0 <col:1, col:14> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | | | |-ImplicitCastExpr 0x7ff61a2d3d88 <col:11> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | | | `-DeclRefExpr 0x7ff61a2d31a0 <col:11> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7ff61a2cdb68 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | | | |-DeclRefExpr 0x7ff61a2c8060 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | `-ImplicitCastExpr 0x7ff61a2d3188 <col:14> 'const char *' <ArrayToPointerDecay> | | | | | | | `-StringLiteral 0x7ff61a2c8090 <col:14> 'const char[17]' lvalue "Combinations of " | | | | | | `-ImplicitCastExpr 0x7ff61a2d8ba8 <col:36> 'const RVec<double>':'const ROOT::VecOps::RVec<double>' lvalue <NoOp> | | | | | | `-DeclRefExpr 0x7ff61a2d3dd8 <col:36> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x961df10 'v1' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | | | | `-ImplicitCastExpr 0x7ff61a2db0f8 <col:42> 'const char *' <ArrayToPointerDecay> | | | | | `-StringLiteral 0x7ff61a2d8ca8 <col:42> 'const char[6]' lvalue " and " | | | | `-ImplicitCastExpr 0x7ff61a2ddad8 <col:53> 'const RVec<double>':'const ROOT::VecOps::RVec<double>' lvalue <NoOp> | | | | `-DeclRefExpr 0x7ff61a2db180 <col:53> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x962a2e8 'v2' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | | `-ImplicitCastExpr 0x7ff61a2dffa8 <col:59> 'const char *' <ArrayToPointerDecay> | | | `-StringLiteral 0x7ff61a2ddb60 <col:59> 'const char[2]' lvalue ":" | | `-ImplicitCastExpr 0x7ff61a2e6598 <col:66, col:71> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7ff61a2e5e78 <col:66, col:71> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7ff61a2e5540 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x60b2650 'endl') | |-ForStmt 0x7ff61a2e91f0 <line:5:1, line:7:1> | | |-DeclStmt 0x7ff61a2e6840 <line:5:5, col:15> | | | `-VarDecl 0x7ff61a2e6780 <col:5, col:14> col:12 used i 'size_t':'unsigned long' cinit | | | `-ImplicitCastExpr 0x7ff61a2e6808 <col:14> 'size_t':'unsigned long' <IntegralCast> | | | `-IntegerLiteral 0x7ff61a2e67e8 <col:14> 'int' 0 | | |-<<<NULL>>> | | |-CXXOperatorCallExpr 0x7ff61a2e7858 <col:17, col:27> '<dependent type>' '<' | | | |-UnresolvedLookupExpr 0x7ff61a2e75f0 <col:18> '<overloaded function type>' lvalue (ADL) = 'operator<' 0x5639b08 0x563a308 0x563ab48 0x6b82180 0x6b93f50 0x6b9c510 0x734de28 0x734e3e0 0x734e9b0 0x6ca4a30 0x5762d18 0x58a20d8 0x58a35d0 0x58ab7b8 0x58abd80 0x5b65a20 0x5b65ff8 0x5b66790 0x5b84368 0x5b84a78 0x5b85088 0x5bd4d80 0x5c71250 0x5d4b2d0 0x5d4f610 0x5d4fa90 0x5d51aa0 0x5d52628 0x5ee61a0 0x60647a8 0x6065378 0x6185800 0x61864b0 0x6186f50 0x673f2d8 0x673f9d8 0x673ff18 0x5dae620 0x5daebc8 0x5daf020 0x6234368 0x6234a78 0x624b370 0x6275a30 0x62ccc08 0x634b5b0 0x63c23e0 0x63d23c0 0x64051a8 0x64bf378 0x68e5288 0x68e6740 0x68e8700 0x68ea6c0 0x68ebd00 0x68ed340 0x68ee980 0x64ed680 0x6507d30 0x663c2d8 0x663cf40 0x663d9a8 0x663e408 0x663eef8 0x66e36e0 0x66e40e0 0x66e4ae0 0x66f8528 0x66f8a90 | | | |-DeclRefExpr 0x7ff61a2e6858 <col:17> 'size_t':'unsigned long' lvalue Var 0x7ff61a2e6780 'i' 'size_t':'unsigned long' | | | `-CallExpr 0x7ff61a2e6900 <col:19, col:27> '<dependent type>' | | | `-CXXDependentScopeMemberExpr 0x7ff61a2e68b8 <col:19, col:22> '<dependent type>' lvalue .size | | | `-DeclRefExpr 0x7ff61a2e6878 <col:19> 'auto' lvalue Var 0x7ff61a2c7a98 'v3' 'auto' | | |-UnaryOperator 0x7ff61a2e78b0 <col:30, col:31> 'size_t':'unsigned long' postfix '++' | | | `-DeclRefExpr 0x7ff61a2e7890 <col:30> 'size_t':'unsigned long' lvalue Var 0x7ff61a2e6780 'i' 'size_t':'unsigned long' | | `-CompoundStmt 0x7ff61a2e91d8 <col:35, line:7:1> | | `-CXXOperatorCallExpr 0x7ff61a2e91a0 <line:6:5, col:68> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7ff61a2e8e60 <col:60> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | |-CXXOperatorCallExpr 0x7ff61a2e8dc0 <col:5, col:58> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7ff61a2e8a80 <col:51> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | |-CXXOperatorCallExpr 0x7ff61a2e89e8 <col:5, col:45> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7ff61a2e86a8 <col:42> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | |-CXXOperatorCallExpr 0x7ff61a2e8650 <col:5, col:40> '<dependent type>' '<<' | | | | | |-UnresolvedLookupExpr 0x7ff61a2e8310 <col:33> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | |-CXXOperatorCallExpr 0x7ff61a2e8178 <col:5, col:27> '<dependent type>' '<<' | | | | | | |-UnresolvedLookupExpr 0x7ff61a2e7e38 <col:24> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | |-CXXOperatorCallExpr 0x7ff61a2e7de0 <col:5, col:22> '<dependent type>' '<<' | | | | | | | |-UnresolvedLookupExpr 0x7ff61a2e7aa0 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | | |-DeclRefExpr 0x7ff61a2e7918 <col:5, col:10> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | `-ArraySubscriptExpr 0x7ff61a2e7a80 <col:18, col:22> '<dependent type>' lvalue | | | | | | | |-DeclRefExpr 0x7ff61a2e7a20 <col:18> '<dependent type>' lvalue Var 0x7ff61a2e7950 'c1' '<dependent type>' | | | | | | | `-DeclRefExpr 0x7ff61a2e7a60 <col:21> 'size_t':'unsigned long' lvalue Var 0x7ff61a2e6780 'i' 'size_t':'unsigned long' | | | | | | `-StringLiteral 0x7ff61a2e7e18 <col:27> 'const char[4]' lvalue " * " | | | | | `-ArraySubscriptExpr 0x7ff61a2e82f0 <col:36, col:40> '<dependent type>' lvalue | | | | | |-DeclRefExpr 0x7ff61a2e8290 <col:36> '<dependent type>' lvalue Var 0x7ff61a2e81b8 'c2' '<dependent type>' | | | | | `-DeclRefExpr 0x7ff61a2e82d0 <col:39> 'size_t':'unsigned long' lvalue Var 0x7ff61a2e6780 'i' 'size_t':'unsigned long' | | | | `-StringLiteral 0x7ff61a2e8688 <col:45> 'const char[4]' lvalue " = " | | | `-ArraySubscriptExpr 0x7ff61a2e8a60 <col:54, col:58> '<dependent type>' lvalue | | | |-DeclRefExpr 0x7ff61a2e8a20 <col:54> 'auto' lvalue Var 0x7ff61a2c7a98 'v3' 'auto' | | | `-DeclRefExpr 0x7ff61a2e8a40 <col:57> 'size_t':'unsigned long' lvalue Var 0x7ff61a2e6780 'i' 'size_t':'unsigned long' | | `-UnresolvedLookupExpr 0x7ff61a2e8e18 <col:63, col:68> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x60b2650 | |-CXXOperatorCallExpr 0x7ff61a2eb060 <line:8:1, col:19> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7ff61a2eb048 <col:11> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7ff61a2eb028 <col:11> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x935baa8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-DeclRefExpr 0x7ff61a2e9278 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | `-ImplicitCastExpr 0x7ff61a2eb010 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7ff61a2eafd8 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7ff61a2e5540 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x60b2650 'endl') | `-NullStmt 0x7ff61a2eb0c8 <line:9:1> |-AnnotateAttr 0x7ff61a2c7b70 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2c7cc0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2e79b8 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7ff61a2e8220 <<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 0x7ff61a2fce20 <input_line_55:1:1, line:5:1> line:1:6 __cling_Un1Qu323 'void (void *)' |-ParmVarDecl 0x7ff61a2fcd68 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7ff61a2fd580 <col:43, line:5:1> | |-DeclStmt 0x7ff61a2fd200 <line:2:2, col:32> | | `-VarDecl 0x7ff61a2fcf40 <col:2, col:31> col:14 used v4 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' listinit destroyed | | `-ExprWithCleanups 0x7ff61a2fd1c8 <col:14, col:31> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-CXXConstructExpr 0x7ff61a2fd198 <col:14, col:31> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' 'void (std::initializer_list<double>)' list std::initializer_list | | `-CXXStdInitializerListExpr 0x7ff61a2fd180 <col:16, col:31> 'std::initializer_list<double>':'std::initializer_list<double>' | | `-MaterializeTemporaryExpr 0x7ff61a2fd168 <col:16, col:31> 'const double[4]' xvalue | | `-InitListExpr 0x7ff61a2fd108 <col:16, col:31> 'const double[4]' | | |-FloatingLiteral 0x7ff61a2fcfa8 <col:17> 'double' 1.000000e+00 | | |-FloatingLiteral 0x7ff61a2fcfc8 <col:21> 'double' 2.000000e+00 | | |-FloatingLiteral 0x7ff61a2fcfe8 <col:25> 'double' 3.000000e+00 | | `-FloatingLiteral 0x7ff61a2fd008 <col:29> 'double' 4.000000e+00 | |-DeclStmt 0x7ff61a2fd560 <line:3:1, col:32> | | `-VarDecl 0x7ff61a2fd260 <col:1, col:31> col:6 idx2 'auto' cinit | | `-CallExpr 0x7ff61a2fd530 <col:13, col:31> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fd4b0 <col:13> '<dependent type>' lvalue Var 0x7ff61a2fd3d8 'Combinations' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fd4f0 <col:26> 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' lvalue Var 0x7ff61a2fcf40 'v4' 'ROOT::RVecD':'ROOT::VecOps::RVec<double>' | | `-IntegerLiteral 0x7ff61a2fd510 <col:30> 'int' 3 | `-NullStmt 0x7ff61a2fd578 <line:4:1> |-AnnotateAttr 0x7ff61a2fd338 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7ff61a2fd440 <<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 0x7ff61a2fd6d0 <input_line_56:1:1, line:14:1> line:1:6 __cling_Un1Qu324 'void (void *)' |-ParmVarDecl 0x7ff61a2fd618 <col:23, col:29> col:29 vpClingValue 'void *' |-CompoundStmt 0x7ff61a388078 <col:43, line:14:1> | |-DeclStmt 0x7ff61a2fdd30 <line:2:2, col:29> | | `-VarDecl 0x7ff61a2fd7e8 <col:2, col:28> col:7 used c3 'auto' cinit | | `-CallExpr 0x7ff61a2fdd00 <col:12, col:28> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fda40 <col:12> '<dependent type>' lvalue Var 0x7ff61a2fd968 'Take' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fdb60 <col:17> '<dependent type>' lvalue Var 0x7ff61a2fda88 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7ff61a2fdce0 <col:21, col:27> '<dependent type>' lvalue | | |-DeclRefExpr 0x7ff61a2fdc80 <col:21> '<dependent type>' lvalue Var 0x7ff61a2fdba8 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7ff61a2fdcc0 <col:26> 'int' 0 | |-DeclStmt 0x7ff61a2fe2a0 <line:3:1, col:28> | | `-VarDecl 0x7ff61a2fdd90 <col:1, col:27> col:6 used c4 'auto' cinit | | `-CallExpr 0x7ff61a2fe270 <col:11, col:27> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fdfb0 <col:11> '<dependent type>' lvalue Var 0x7ff61a2fded8 'Take' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fe0d0 <col:16> '<dependent type>' lvalue Var 0x7ff61a2fdff8 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7ff61a2fe250 <col:20, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7ff61a2fe1f0 <col:20> '<dependent type>' lvalue Var 0x7ff61a2fe118 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7ff61a2fe230 <col:25> 'int' 1 | |-DeclStmt 0x7ff61a2fe810 <line:4:1, col:28> | | `-VarDecl 0x7ff61a2fe300 <col:1, col:27> col:6 used c5 'auto' cinit | | `-CallExpr 0x7ff61a2fe7e0 <col:11, col:27> '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fe520 <col:11> '<dependent type>' lvalue Var 0x7ff61a2fe448 'Take' '<dependent type>' | | |-DeclRefExpr 0x7ff61a2fe640 <col:16> '<dependent type>' lvalue Var 0x7ff61a2fe568 'v4' '<dependent type>' | | `-ArraySubscriptExpr 0x7ff61a2fe7c0 <col:20, col:26> '<dependent type>' lvalue | | |-DeclRefExpr 0x7ff61a2fe760 <col:20> '<dependent type>' lvalue Var 0x7ff61a2fe688 'idx2' '<dependent type>' | | `-IntegerLiteral 0x7ff61a2fe7a0 <col:25> 'int' 2 | |-DeclStmt 0x7ff61a2feea8 <line:6:1, col:23> | | `-VarDecl 0x7ff61a2fe870 <col:1, col:21> col:6 used v5 'auto' cinit | | `-CXXOperatorCallExpr 0x7ff61a2fee70 <col:11, col:21> '<dependent type>' '*' | | |-UnresolvedLookupExpr 0x7ff61a2fec20 <col:19> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x6b93730 0x7358120 0x7358618 0x7358b18 0x73590e0 0x73596b0 0x7359c80 0x6ca2348 0x6ca2848 0x6caf3a8 0x6caf970 0x6caff40 0x6cb0510 0x6cb0a18 0x735a290 0x735a810 0x735ae20 0x735b430 0x735ba40 0x735bf88 0x6d18948 0x6d18e60 0x6d19bb0 0x6d1a5e8 0x6d1ab00 0x6d1b850 0x6d1c298 0x6d1c7b0 0x6d1d500 0x6d1df48 0x6d1e460 0x6d1f1b0 0x6d1f9f0 0x6d1ff10 0x6d20c60 0x6d214a0 0x6d219c0 0x6d22710 0x6d9d800 0x6d9dc20 0x6d9e040 0x6ff19b0 0x6ff1190 0x6ff15a0 0x6ff4ec0 0x6ff5150 0x6ff53d8 0x6ff5658 0x7023f18 0x7031190 0x703f490 0x7ff6187aaed8 0x7ff6187af4a8 0x7ff6187afff0 0x7ff6187b6940 0x6102348 0x6102900 0x6102e38 0x66124e8 0x6613180 0x6613be8 0x6614648 0x6615138 0x66cb4f0 0x66cbf50 0x66cc950 | | |-CXXOperatorCallExpr 0x7ff61a2feba8 <col:11, col:16> '<dependent type>' '*' | | | |-UnresolvedLookupExpr 0x7ff61a2fe958 <col:14> '<overloaded function type>' lvalue (ADL) = 'operator*' 0x6b93730 0x7358120 0x7358618 0x7358b18 0x73590e0 0x73596b0 0x7359c80 0x6ca2348 0x6ca2848 0x6caf3a8 0x6caf970 0x6caff40 0x6cb0510 0x6cb0a18 0x735a290 0x735a810 0x735ae20 0x735b430 0x735ba40 0x735bf88 0x6d18948 0x6d18e60 0x6d19bb0 0x6d1a5e8 0x6d1ab00 0x6d1b850 0x6d1c298 0x6d1c7b0 0x6d1d500 0x6d1df48 0x6d1e460 0x6d1f1b0 0x6d1f9f0 0x6d1ff10 0x6d20c60 0x6d214a0 0x6d219c0 0x6d22710 0x6d9d800 0x6d9dc20 0x6d9e040 0x6ff19b0 0x6ff1190 0x6ff15a0 0x6ff4ec0 0x6ff5150 0x6ff53d8 0x6ff5658 0x7023f18 0x7031190 0x703f490 0x7ff6187aaed8 0x7ff6187af4a8 0x7ff6187afff0 0x7ff6187b6940 0x6102348 0x6102900 0x6102e38 0x66124e8 0x6613180 0x6613be8 0x6614648 0x6615138 0x66cb4f0 0x66cbf50 0x66cc950 | | | |-DeclRefExpr 0x7ff61a2fe8d8 <col:11> 'auto' lvalue Var 0x7ff61a2fd7e8 'c3' 'auto' | | | `-DeclRefExpr 0x7ff61a2fe918 <col:16> 'auto' lvalue Var 0x7ff61a2fdd90 'c4' 'auto' | | `-DeclRefExpr 0x7ff61a2febe0 <col:21> 'auto' lvalue Var 0x7ff61a2fe300 'c5' 'auto' | |-CXXOperatorCallExpr 0x7ff61a302068 <line:8:1, col:56> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7ff61a301d28 <col:48> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | |-CXXOperatorCallExpr 0x7ff61a301c88 <col:1, col:44> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7ff61a301948 <col:41> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | |-CXXOperatorCallExpr 0x7ff61a3018f0 <col:1, col:38> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7ff61a3015b0 <col:35> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | |-CXXOperatorCallExpr 0x7ff61a301458 <col:1, col:14> 'basic_ostream<char, char_traits<char> >':'std::basic_ostream<char>' lvalue '<<' | | | | | |-ImplicitCastExpr 0x7ff61a301440 <col:11> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &, const char *)' <FunctionToPointerDecay> | | | | | | `-DeclRefExpr 0x7ff61a301420 <col:11> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' lvalue Function 0x7ff61a2cdb68 'operator<<' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &, const char *)' | | | | | |-DeclRefExpr 0x7ff61a2fef10 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | | | | `-ImplicitCastExpr 0x7ff61a301408 <col:14> 'const char *' <ArrayToPointerDecay> | | | | | `-StringLiteral 0x7ff61a2fefb8 <col:14> 'const char[19]' lvalue "Unique triples of " | | | | `-DeclRefExpr 0x7ff61a301570 <col:38> '<dependent type>' lvalue Var 0x7ff61a301498 'v4' '<dependent type>' | | | `-StringLiteral 0x7ff61a301928 <col:44> 'const char[2]' lvalue ":" | | `-UnresolvedLookupExpr 0x7ff61a301ce0 <col:51, col:56> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x60b2650 | |-ForStmt 0x7ff61a3861c8 <line:9:1, line:11:1> | | |-DeclStmt 0x7ff61a302178 <line:9:5, col:15> | | | `-VarDecl 0x7ff61a3020b8 <col:5, col:14> col:12 used i 'size_t':'unsigned long' cinit | | | `-ImplicitCastExpr 0x7ff61a302140 <col:14> 'size_t':'unsigned long' <IntegralCast> | | | `-IntegerLiteral 0x7ff61a302120 <col:14> 'int' 0 | | |-<<<NULL>>> | | |-CXXOperatorCallExpr 0x7ff61a3025a0 <col:17, col:27> '<dependent type>' '<' | | | |-UnresolvedLookupExpr 0x7ff61a302338 <col:18> '<overloaded function type>' lvalue (ADL) = 'operator<' 0x5639b08 0x563a308 0x563ab48 0x6b82180 0x6b93f50 0x6b9c510 0x734de28 0x734e3e0 0x734e9b0 0x6ca4a30 0x5762d18 0x58a20d8 0x58a35d0 0x58ab7b8 0x58abd80 0x5b65a20 0x5b65ff8 0x5b66790 0x5b84368 0x5b84a78 0x5b85088 0x5bd4d80 0x5c71250 0x5d4b2d0 0x5d4f610 0x5d4fa90 0x5d51aa0 0x5d52628 0x5ee61a0 0x60647a8 0x6065378 0x6185800 0x61864b0 0x6186f50 0x673f2d8 0x673f9d8 0x673ff18 0x5dae620 0x5daebc8 0x5daf020 0x6234368 0x6234a78 0x624b370 0x6275a30 0x62ccc08 0x634b5b0 0x63c23e0 0x63d23c0 0x64051a8 0x64bf378 0x68e5288 0x68e6740 0x68e8700 0x68ea6c0 0x68ebd00 0x68ed340 0x68ee980 0x64ed680 0x6507d30 0x663c2d8 0x663cf40 0x663d9a8 0x663e408 0x663eef8 0x66e36e0 0x66e40e0 0x66e4ae0 0x66f8528 0x66f8a90 | | | |-DeclRefExpr 0x7ff61a302190 <col:17> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | | `-CallExpr 0x7ff61a302318 <col:19, col:27> '<dependent type>' | | | `-CXXDependentScopeMemberExpr 0x7ff61a3022d0 <col:19, col:22> '<dependent type>' lvalue .size | | | `-DeclRefExpr 0x7ff61a302290 <col:19> '<dependent type>' lvalue Var 0x7ff61a3021b8 'v4' '<dependent type>' | | |-UnaryOperator 0x7ff61a3025f8 <col:30, col:31> 'size_t':'unsigned long' postfix '++' | | | `-DeclRefExpr 0x7ff61a3025d8 <col:30> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | `-CompoundStmt 0x7ff61a3861b0 <col:35, line:11:1> | | `-CXXOperatorCallExpr 0x7ff61a386178 <line:10:5, col:86> '<dependent type>' '<<' | | |-UnresolvedLookupExpr 0x7ff61a385e38 <col:78> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | |-CXXOperatorCallExpr 0x7ff61a385d98 <col:5, col:76> '<dependent type>' '<<' | | | |-UnresolvedLookupExpr 0x7ff61a385a58 <col:69> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | |-CXXOperatorCallExpr 0x7ff61a3859a0 <col:5, col:63> '<dependent type>' '<<' | | | | |-UnresolvedLookupExpr 0x7ff61a385660 <col:60> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | |-CXXOperatorCallExpr 0x7ff61a303910 <col:5, col:58> '<dependent type>' '<<' | | | | | |-UnresolvedLookupExpr 0x7ff61a3035d0 <col:51> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | |-CXXOperatorCallExpr 0x7ff61a303538 <col:5, col:45> '<dependent type>' '<<' | | | | | | |-UnresolvedLookupExpr 0x7ff61a3031f8 <col:42> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | |-CXXOperatorCallExpr 0x7ff61a3031a0 <col:5, col:40> '<dependent type>' '<<' | | | | | | | |-UnresolvedLookupExpr 0x7ff61a302e60 <col:33> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | | |-CXXOperatorCallExpr 0x7ff61a302dc8 <col:5, col:27> '<dependent type>' '<<' | | | | | | | | |-UnresolvedLookupExpr 0x7ff61a302a88 <col:24> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | | | |-CXXOperatorCallExpr 0x7ff61a302a30 <col:5, col:22> '<dependent type>' '<<' | | | | | | | | | |-UnresolvedLookupExpr 0x7ff61a3026f0 <col:15> '<overloaded function type>' lvalue (ADL) = 'operator<<' 0x6b801f8 0x5619db8 0x5619718 0x6b7d7b8 0x6b7da40 0x6b7dcd0 0x6b7df60 0x6b7e1f0 0x6b7e480 0x6b7e710 0x6b7e9a0 0x6b7ec30 0x6b7eec0 0x6b7f150 0x6b7f3e0 0x6b7f670 0x6b7f900 0x6b7fbc8 0x6b836e8 0x6b85d58 0x6b8cff8 0x6b8dee8 0x6b9b3a8 0x6b9b6c8 0x6ba5b18 0x6ba6c18 0x6ba7f58 0x6ba9328 0x6baa668 0x6bab9a8 0x6bada50 0x6df50a8 0x6df6a88 0x6fd1548 0x5b71920 0x5b8ad38 0x5fba9c8 0x60649c0 0x60ae658 0x60aecf8 0x60af398 0x60afa28 0x60b0030 0x60b0640 0x60b78b0 0x60b13c0 0x60b19d0 0x60b2010 0x60b6498 0x6105540 0x5dacbd0 0x62299e8 0x62cdba8 0x63285a8 0x6329648 0x632a6c8 0x632bc38 0x632cd48 0x632ddc8 0x632fce0 0x6330dc0 0x6424ba8 0x6459fd8 0x6431238 0x6432198 0x64330f8 0x6434068 0x647d238 0x6434758 0x6493178 0x64356b8 0x6436618 0x6437578 0x643e7e8 0x6463c48 0x6466270 0x6468948 0x6473738 0x6476408 0x6479bf8 0x6486e78 0x64899d0 0x648dcf8 0x64906b8 0x64a0288 0x64a4ff8 0x64a9c98 0x68effc0 0x6627058 0x6627cf0 0x6628758 0x66291b8 0x6629ca8 0x66dbe20 0x66dc880 0x66dd280 | | | | | | | | | |-DeclRefExpr 0x7ff61a302660 <col:5, col:10> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | | | | | | | | `-ArraySubscriptExpr 0x7ff61a3026d0 <col:18, col:22> '<dependent type>' lvalue | | | | | | | | | |-DeclRefExpr 0x7ff61a302690 <col:18> 'auto' lvalue Var 0x7ff61a2fd7e8 'c3' 'auto' | | | | | | | | | `-DeclRefExpr 0x7ff61a3026b0 <col:21> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | | | | | | | `-StringLiteral 0x7ff61a302a68 <col:27> 'const char[4]' lvalue " * " | | | | | | | `-ArraySubscriptExpr 0x7ff61a302e40 <col:36, col:40> '<dependent type>' lvalue | | | | | | | |-DeclRefExpr 0x7ff61a302e00 <col:36> 'auto' lvalue Var 0x7ff61a2fdd90 'c4' 'auto' | | | | | | | `-DeclRefExpr 0x7ff61a302e20 <col:39> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | | | | | `-StringLiteral 0x7ff61a3031d8 <col:45> 'const char[4]' lvalue " * " | | | | | `-ArraySubscriptExpr 0x7ff61a3035b0 <col:54, col:58> '<dependent type>' lvalue | | | | | |-DeclRefExpr 0x7ff61a303570 <col:54> 'auto' lvalue Var 0x7ff61a2fe300 'c5' 'auto' | | | | | `-DeclRefExpr 0x7ff61a303590 <col:57> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | | | `-StringLiteral 0x7ff61a303948 <col:63> 'const char[4]' lvalue " = " | | | `-ArraySubscriptExpr 0x7ff61a385a38 <col:72, col:76> '<dependent type>' lvalue | | | |-DeclRefExpr 0x7ff61a3859d8 <col:72> 'auto' lvalue Var 0x7ff61a2fe870 'v5' 'auto' | | | `-DeclRefExpr 0x7ff61a385a18 <col:75> 'size_t':'unsigned long' lvalue Var 0x7ff61a3020b8 'i' 'size_t':'unsigned long' | | `-UnresolvedLookupExpr 0x7ff61a385df0 <col:81, col:86> '<overloaded function type>' lvalue (no ADL) = 'endl' 0x60b2650 | |-CXXOperatorCallExpr 0x7ff61a388038 <line:12:1, col:19> '__ostream_type':'std::basic_ostream<char>' lvalue '<<' | | |-ImplicitCastExpr 0x7ff61a388020 <col:11> '__ostream_type &(*)(__ostream_type &(*)(__ostream_type &))' <FunctionToPointerDecay> | | | `-DeclRefExpr 0x7ff61a388000 <col:11> '__ostream_type &(__ostream_type &(*)(__ostream_type &))' lvalue CXXMethod 0x935baa8 'operator<<' '__ostream_type &(__ostream_type &(*)(__ostream_type &))' | | |-DeclRefExpr 0x7ff61a386250 <col:1, col:6> 'ostream':'std::basic_ostream<char>' lvalue Var 0x6349368 'cout' 'ostream':'std::basic_ostream<char>' | | `-ImplicitCastExpr 0x7ff61a387fe8 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(*)(basic_ostream<char, char_traits<char> > &)' <FunctionToPointerDecay> | | `-DeclRefExpr 0x7ff61a387fb0 <col:14, col:19> 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' lvalue Function 0x7ff61a2e5540 'endl' 'basic_ostream<char, char_traits<char> > &(basic_ostream<char, char_traits<char> > &)' (FunctionTemplate 0x60b2650 'endl') | `-NullStmt 0x7ff61a388070 <line:13:1> |-AnnotateAttr 0x7ff61a2fd8c0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fd9d0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fdaf0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fdc10 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fde68 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fdf40 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe060 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe180 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe3d8 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe4b0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe5d0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a2fe6f0 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" |-AnnotateAttr 0x7ff61a301500 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" `-AnnotateAttr 0x7ff61a302220 <<invalid sloc>> Implicit R"ATTRDUMP(__ResolveAtRuntime)ATTRDUMP" <<<NULL>>>