Blame tests/run/curiously_recurring_template_pattern_GH1458.pyx

Packit 562c7a
# tag: cpp
Packit 562c7a
Packit 562c7a
cdef extern from "curiously_recurring_template_pattern_GH1458_suport.h":
Packit 562c7a
Packit 562c7a
    cdef cppclass Base[T, Derived]:
Packit 562c7a
        Base(T)
Packit 562c7a
        Derived half()
Packit 562c7a
        T calculate()
Packit 562c7a
Packit 562c7a
    cdef cppclass Square[T](Base[T, Square[T]]):
Packit 562c7a
        Square(T)
Packit 562c7a
Packit 562c7a
    cdef cppclass Cube[T](Base[T, Cube[T]]):
Packit 562c7a
        Cube(T)
Packit 562c7a
Packit 562c7a
Packit 562c7a
def test_derived(int x):
Packit 562c7a
    """
Packit 562c7a
    >>> test_derived(5)
Packit 562c7a
    (6.25, 8)
Packit 562c7a
    """
Packit 562c7a
    try:
Packit 562c7a
        square_double = new Square[double](x)
Packit 562c7a
        cube_int = new Cube[int](x)
Packit 562c7a
        return square_double.half().calculate(), cube_int.half().calculate()
Packit 562c7a
    finally:
Packit 562c7a
        del square_double, cube_int