title: Differences between Pthread in C vs C++
body: <p>So I was able to pass an Ada function using Ada_function'Address to a C_function. Here is the C function: </p>
  
  <pre><code>void Create_Process(int * status, void * function) {
      pthread_t new_thread;
  
      //creating function with the given function and no arguments.
      *status = pthread_create(&amp;new_thread, NULL, function, NULL);
  }
  </code></pre>
  
  <p>This worked perfectly fine. My problem is when I try to use this same function in C++. It fails at compiling with the error:</p>
  
  <pre><code>error: invalid conversion from ‘void*’ to ‘void* (*)(void*)’ [-fpermissive]
  *status = pthread_create(&amp;new_thread, NULL, function, NULL);
  </code></pre>
  
  <p>Is there any reason that this works / compiles in C but not C++?</p>