#include <iostream>
using namespace std;

template <typename Coordinate>
class BoundingTree
{
public:
  BoundingTree() {}
  
  // collide function decleration
  template <typename RigidBody> bool collide(RigidBody const & obj);
  
};

template<typename Coordinate> template <typename RigidBody>
bool BoundingTree<Coordinate>::collide(RigidBody const & obj)
{
  std::cout << "default" << std::endl;
  return false;
}

template<> template<>
bool BoundingTree<double>::collide<int>(int const & d)
{
  std::cout << "Vector3f Sphere3f" << std::endl;
  return 1;
};

int main() {
  BoundingTree<double> tree;
  tree.collide(50);
  
  BoundingTree<bool> tree2;
  tree2.collide(100);
	return 0;
}