Если вы хотите, чтобы функция member объявила ее внутри класса:
template<class Key, int b> class b_plus_tree_inner_node {
b_plus_tree_inner_node* split(){}
// also valid:
//b_plus_tree_inner_node<Key, b>* split(){}
};
Если вы хотите функцию non-member , сделайте ее шаблоном:
template<class Key, int b>
b_plus_tree_inner_node<Key, b>* split(){}
Стандарт позволяет писать auto split() -> decltype(this) {}
, но GCC 4.6 пока не поддерживает его (транк GCC 4.7 поддерживает).