fork download
  1.  
  2. #include <cmath>
  3. #include <tuple>
  4. #include <functional>
  5.  
  6. using std::less;
  7. using std::tuple;
  8.  
  9. template <typename T>
  10. struct AvlNode;
  11.  
  12. template <typename T>
  13. struct AvlNodeVtl;
  14.  
  15. struct Stat { };
  16.  
  17. struct gsl_rng;
  18.  
  19. struct Aleph {
  20. template <typename T>
  21. using less = std::less<T>;
  22. };
  23.  
  24. template <template <typename> class NodeType, typename Key, class Compare>
  25. class Gen_Avl_Tree
  26. {
  27. };
  28.  
  29.  
  30. #if 0 /* This works */
  31.  
  32. template <typename Key, class Compare = less<Key>>
  33. struct Avl_Tree : public Gen_Avl_Tree<AvlNode, Key, Compare>
  34. {
  35. using Base = Gen_Avl_Tree<AvlNode, Key, Compare>;
  36. //using Base::Base;
  37. };
  38.  
  39. template <typename Key, class Compare = less<Key>>
  40. struct Avl_Tree_Vtl : public Gen_Avl_Tree<AvlNodeVtl, Key, Compare>
  41. {
  42. using Base = Gen_Avl_Tree<AvlNodeVtl, Key, Compare>;
  43. //using Base::Base;
  44. };
  45.  
  46. #else /* This seems to work as well */
  47.  
  48. template <typename Key, class Compare = less<Key>>
  49. using Avl_Tree = Gen_Avl_Tree<AvlNode, Key, Compare>;
  50.  
  51. template <typename Key, class Compare = less<Key>>
  52. using Avl_Tree_Vtl = Gen_Avl_Tree<AvlNodeVtl, Key, Compare>;
  53.  
  54. #endif
  55.  
  56.  
  57. template <
  58. template <typename, class> class TreeType,
  59. typename Key,
  60. class Compare = Aleph::less<Key>
  61. >
  62. tuple<Stat, Stat, int, int>
  63. sample_tree(TreeType<Key, Compare> & tree, gsl_rng * r, int n, int k)
  64. {
  65. return tuple<Stat,Stat,int,int>();
  66. }
  67.  
  68. template < template <typename /* key */, class /* Compare */> class TreeType>
  69. void test(unsigned long n, gsl_rng * r)
  70. {
  71. TreeType<int,int> tree;
  72. int i = 0;
  73. tuple<Stat, Stat, int, int> stats = sample_tree(tree, r, i, log(i)/log(2));
  74. }
  75.  
  76. int main()
  77. {
  78. unsigned long n = 0;
  79. gsl_rng *r = 0;
  80. test<Avl_Tree>(n, r);
  81. }
  82.  
Success #stdin #stdout 0s 3336KB
stdin
Standard input is empty
stdout
Standard output is empty