diff --git a/src/type_info.cpp b/src/type_info.cpp
index 98e1e44fce9f4edfb8bd476317203120a98d27f6..482370cea4ca7909d1e65825d3ed4b8021a46408 100644
--- a/src/type_info.cpp
+++ b/src/type_info.cpp
@@ -8,10 +8,16 @@
 #include <boost/python.hpp>
 #include <boost/type_index.hpp>
 
+#include "eigenpy/registration.hpp"
+
 namespace bp = boost::python;
 
+namespace eigenpy {
+
 void exposeStdTypeIndex() {
   typedef std::type_index Self;
+  if (register_symbolic_link_to_registered_type<Self>()) return;
+
   bp::class_<Self>(
       "std_type_index",
       "The class type_index holds implementation-specific information about a "
@@ -42,6 +48,8 @@ void exposeStdTypeIndex() {
 
 void exposeBoostTypeIndex() {
   typedef boost::typeindex::type_index Self;
+  if (register_symbolic_link_to_registered_type<Self>()) return;
+
   bp::class_<Self>(
       "boost_type_index",
       "The class type_index holds implementation-specific information about a "
@@ -66,7 +74,6 @@ void exposeBoostTypeIndex() {
            "Human readible name.");
 }
 
-namespace eigenpy {
 void exposeTypeInfo() {
   exposeStdTypeIndex();
   exposeBoostTypeIndex();