[PyQt] SIP template-based class with argument having default constructor as default value

Shaheed Haque srhaque at theiet.org
Tue Jun 13 18:23:11 BST 2017


On 13 June 2017 at 15:16, Denis Rouzaud <denis.rouzaud at gmail.com> wrote:
>
> Hi all,
>
> Title says it all ;)
>
> I think there is an issue on how SIP handles the default value argument for
> template-based classes.
> SIP don't replaces the T var by the implemented  base class constructor. See
> below.
>
> Let's say I have
>
> template <typename T>
> class Base
> {
>   pubic:
>     Base( const T &epoch = T()) : mEpoch( epoch ){}
>   private:
>     T mEpoch;
> }
>
> typedef Base< QDate > MyDate;
> typedef Base< QDateTime > MyDateTime;
>
>
> Here is the SIP code generated:
>
> static void *init_type_MyDate(sipSimpleWrapper *, PyObject *sipArgs,
> PyObject *sipKwds, PyObject **sipUnused, PyObject **, PyObject
> **sipParseErr)
> {
>     MyDate *sipCpp = 0;
>     {
>         const QDate& a0def = T();
>         const QDate* a0 = &a0def;
>         int a0State = 0;
> ......
>
>
> I get an error:
> use of undeclared identifier 'T'
>      in   const QDate& a0def = T();
>
>
> Does someone confirm?


I see it too:

/tmp/tmpQYVtIS/tmp2/tmp/PySample/sipPySampleQStringBase.cpp:96:37:
error: ‘T’ was not declared in this scope
         const  ::QString& a0def = T();


> Is there a workaround?
> Cheers,
> Denis
>
>
>
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt


More information about the PyQt mailing list