Thanks, this works: {.emit:"""
#include <algorithm> void nth_element(float* arr, int size, int n) { std::nth_element(arr, arr + n, arr + size); } """.} proc nth_element*(array: ptr float32, size: int, n: int) {.importcpp: "nth_element(@)".} > var arr = newSeq[float32](https://forum.nim-lang.org/10) > > for i in 0 ..< arr.len: > arr[i] = i.float32 > > nth_element(addr arr[0], arr.len, 5) However if I try to export the nth_element function and import from another module, I have an error: .cache/nim/test1_d/@mtest1.nim.cpp: In function ‘void NimMainModule()’: .cache/nim/test1_d/@mtest1.nim.cpp:1249:25: error: ‘nth_element’ was not declared in this scope 1249 | nth_element((&arr__test49_u28.p->data[((NI)0)]), [T23](https://forum.nim-lang.org/postActivity.xml#T23), ((NI)5)); | ^~~~~~~~~~~ Error: execution of an external compiler program 'g++ -c -std=gnu++17 -funsigned-char -w -fmax-errors=3 -fpermissive -pthread -I/home/....../.choosenim/toolchains/nim-2.0.4/lib -I/home/....development/vex-core/tests -o /home/...../.cache/nim/test1_d/@mtest1.nim.cpp.o /home/...../.cache/nim/test1_d/@mtest1.nim.cpp' failed with exit code: 1 it seems it cannot find the cpp declaration from the importing module.. how can I make that declaration available? Or should I compile this module first and import it compiled?