#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIENvb3JkaW5hdGU+CmNsYXNzIEJvdW5kaW5nVHJlZQp7CnB1YmxpYzoKICBCb3VuZGluZ1RyZWUoKSB7fQogIAogIC8vIGNvbGxpZGUgZnVuY3Rpb24gZGVjbGVyYXRpb24KICB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmlnaWRCb2R5PiBib29sIGNvbGxpZGUoUmlnaWRCb2R5IGNvbnN0ICYgb2JqKTsKICAKfTsKCnRlbXBsYXRlPHR5cGVuYW1lIENvb3JkaW5hdGU+IHRlbXBsYXRlIDx0eXBlbmFtZSBSaWdpZEJvZHk+CmJvb2wgQm91bmRpbmdUcmVlPENvb3JkaW5hdGU+Ojpjb2xsaWRlKFJpZ2lkQm9keSBjb25zdCAmIG9iaikKewogIHN0ZDo6Y291dCA8PCAiZGVmYXVsdCIgPDwgc3RkOjplbmRsOwogIHJldHVybiBmYWxzZTsKfQoKdGVtcGxhdGU8PiB0ZW1wbGF0ZTw+CmJvb2wgQm91bmRpbmdUcmVlPGRvdWJsZT46OmNvbGxpZGU8aW50PihpbnQgY29uc3QgJiBkKQp7CiAgc3RkOjpjb3V0IDw8ICJWZWN0b3IzZiBTcGhlcmUzZiIgPDwgc3RkOjplbmRsOwogIHJldHVybiAxOwp9OwoKaW50IG1haW4oKSB7CiAgQm91bmRpbmdUcmVlPGRvdWJsZT4gdHJlZTsKICB0cmVlLmNvbGxpZGUoNTApOwogIAogIEJvdW5kaW5nVHJlZTxib29sPiB0cmVlMjsKICB0cmVlMi5jb2xsaWRlKDEwMCk7CglyZXR1cm4gMDsKfQ==