This is a simple example of Proteus processing. Note that the ll file is provided so you may skip the production of this.
Produce the ll file
Below is a simple C++ program that uses a template function to print arrays of various types (src)
       
#include <iostream>
#include <string>
using namespace std;
template< typename T >
void printArray( const T *array, int count )
{
   for ( int i = 0; i < count; i++ )
      cout << array[ i ] << " ";
   cout << endl;
}
int main()
{
   const int aCount = 5; 
   const int bCount = 7; 
   const int cCount = 6; 
   int a[  ] = { 1, 2, 3, 4, 5 };
   double b[  ] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 };
   string c[ ] = {"HELLO","WORLD","How","are","you","?"};
   printArray( a, aCount );  
   printArray( b, bCount );  
   printArray( c, cCount );  
   return 0;
}
       
       Using the below command line the ll file was generated
       
llvm-gcc template.cc -S --emit-llvm -o template.ll 
     Compile with Proteus
Now using this ll file generate an executable jar
	 java -jar Proteus.jar template.ll 
     
     
     Run the generated java executable
     java -jar template.jar