I am using `std::async` to create a thread, I want this new thread should execute separately and main thread should not wait for it. But here when I call std::async, a new thread is created but main thread is waiting for completion of `fun()`. I want main thread to execute parallely without waiting for `fun()` to complete. How should I do that?

```
#include <iostream>
#include <windows.h>
#include <future>
using namespace std;

void printid()
{
   cout << "Thread id is:" << this_thread::get_id() << endl;
}

void fun(void *obj)
{

   cout<<"Entry"<<endl;
   printid();
   Sleep(10000);
   cout<<"Exit"<<endl;
}

int main()
{
    cout<<"Hello"<<endl;
    printid();
    std::async(std::launch::async, fun, nullptr);
    cout << "After call" << endl;
}

```

I am getting output:

```
Hello
Thread id is:22832
Entry
Thread id is:13156
Exit
After call

```