I have the following code...

```
#include <iostream>

using namespace std;

template<typename R, R V = R()> R X() { return V; }

int main()
{
    cout << boolalpha << X<bool>() << endl;    
    cout << boolalpha << X<bool, true>() << endl;

    cout << X<int>() << endl;
    cout << X<int, 5>() << endl;

    cout << X<void>() << endl;   // compiler error

    return 0;
}

```

...which works for the bool and int cases, but does not compile in the void case. Is there a way to handle this?

I know code like this is acceptable...

```
void F()
{
    return void();
}

```

...so need to get that behavior out of the template somehow.