Commit 6837c510 authored by Robert Bradshaw's avatar Robert Bradshaw

Add function template tests.

parent 404c8968
# tag: cpp
from libcpp.pair cimport pair
cdef extern from "cpp_template_functions_helper.h":
cdef T one_param[T](T)
cdef pair[T, U] two_params[T, U](T, U)
cdef cppclass A[T]:
pair[T, U] method[U](T, U)
def test_one_param(int x):
"""
>>> test_one_param(3)
(3, 3.0)
"""
return one_param[int](x), one_param[double](x)
def test_two_params(int x, int y):
"""
>>> test_two_params(1, 2)
(1, 2.0)
"""
return two_params[int, double](x, y)
def test_method(int x, int y):
"""
>>> test_method(5, 10)
((5, 10.0), (5.0, 10))
"""
cdef A[int] a_int
cdef A[double] a_double
return a_int.method[float](x, y), a_double.method[int](x, y)
# return a_int.method[double](x, y), a_double.method[int](x, y)
template <typename T>
T one_param(T value) {
return value;
}
template <typename T, typename U>
std::pair<T, U> two_params(T a, U b) {
return std::pair<T, U>(a, b);
}
template <typename T>
class A {
public:
template <typename U>
std::pair<T, U> method(T a, U b) {
return std::pair<T, U>(a, b);
}
};
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment