If you want the member function to declare it inside the class:
template<class Key, int b> class b_plus_tree_inner_node {
b_plus_tree_inner_node* split(){}
};
If you need a non-member function , make it a template:
template<class Key, int b>
b_plus_tree_inner_node<Key, b>* split(){}
The standard allows you to write auto split() -> decltype(this) {}, but GCC 4.6 does not yet support it (GCC 4.7 trunk).