Я пытаюсь написать оболочку для некоторых шаблонных кодов C ++.Я довольно знаком с упаковкой чего-то написанного как Бар.т.е. (с удаленными деталями)
ctypedef enum enum_t "enum_t":
OPT1 "OPT1",
OPT2 "OPT2",
OPT3 "OPT3"
cdef cppclass Bar[A, B, T, ALLOCATOR=*]
new Bar[OPT1, OPT2, float]
Но у меня возникают проблемы с пониманием того, что такое практика для упаковки экземпляров чего-то вроде Bar<OPT1, OPT2, T> or Bar<OPT3, OPT4, T>
, определенного ниже.Может ли кто-нибудь указать мне правильное направление?То, что я пробовал, дало мне ошибку «OPT1 is неоднозначно» при компиляции.
typedef enum
{
OPT1,
OPT2,
OPT3,
} enum_t;
template<class T, class Allocator = std::allocator<T> >
class BarBase : public Foo<T, Allocator>, public mpi::MPIObject
{
//Generic class methods and variables
}
template<enum_t A, enum_t B, class T, class Allocator = std::allocator<T> >
class Bar : public BarBase<T, Allocator>
{
public:
private:
};
template<typename T>
class Bar<OPT1, OPT2, T> : public BarBase<T>
{
//Specific class methods here
}
template<typename T>
class Bar<OPT3, OPT4, T> : public BarBase<T>
{
//Specific class methods here
}