Fix dropped UnknownArrayHandle symbols
For some reason, GCC is dropping the templated function instances use
for the UnknownArrayHandle
constructor. Apparently, something in the
compiler or the linker is being over aggressive about removing unused
symbols and is actually dropping symbols that are being used. Maybe it
is because the functions are not directly called but their pointers are
used.
To get around this problem, mark these templated functions in
UnknownArrayHandle.h with the used
attribute to force the compiler/
linker to keep them. There should be no consequence to that as these
function templates are only instantiated if they are used.