What's the best way to wrap this C++ code:
template <class T> T my_var;
As a proc
proc myVar[T](): T {.importcpp: "my_var<'0>".}
echo myVar[int]()
or a variable?
type S = distinct string
const myVar = S("my_var")
proc `[]`[T](v: typeof(myVar), typ: typedesc[T]): T {.importcpp: "my_var<'0>".}
echo myVar[int]
how about
{.emit:"""
template <typename T>
constexpr T pi = T(3.1415926535897932385L);
template <typename T>
const static size_t ALIGN_MASK = 64 / sizeof(T) - 1;
""".}
proc pi[T](t:typedesc[T]):T{.importcpp:"pi<'1>".}
proc alignMask[T](t:typedesc[T]):csize_t{.importcpp:"ALIGN_MASK<'1>".}
proc area[T](r:T):T = pi(T) * r * r
echo alignMask(int32)
echo area(3.0'f32)