Py++ has nice feature. If you define typedef for instantiated class template, than Py++ will use it as a Python class name.
For example:
#include <vector>
typedef std::vector< int > numbers;
numbers generate_n(){
...
}
Py++ will use "numbers" as Python class name:
using boost::python;
class_< std::vector< int > >( "numbers" )
...
;
Py++ will pick up the alias, only in case the class has single "typedef".
The previous approach is "implicit" - Py++ does something behind the scene. Recently (version 0.8.6 ), another approach was introduced:
#include <vector>
namespace pyplusplus{ namespace aliases{
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
typedef std::vector< int > numbers;
} } //pyplusplus::aliases
The idea is that you create namespace with a special name - pyplusplus::aliases and Py++ automatically picks the class aliases from it. In case you accidentally introduced two or more different aliases to the same class, it will pick the longest one and print a warning. Other advantages of the approach: