#include <iostream>
//function1
template<typename returnType>
returnType call()
{
//function with return type
std::cout << "function1\n";
return returnType();
}
//function2
template<>
void call<void>()
{
//function without return type
std::cout << "function2\n";
}
int main() {
call<int>(); //call function1
call<void>(); //call function2
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy9mdW5jdGlvbjEKdGVtcGxhdGU8dHlwZW5hbWUgcmV0dXJuVHlwZT4KcmV0dXJuVHlwZSBjYWxsKCkKewogICAgLy9mdW5jdGlvbiB3aXRoIHJldHVybiB0eXBlCiAgICBzdGQ6OmNvdXQgPDwgImZ1bmN0aW9uMVxuIjsKICAgIHJldHVybiByZXR1cm5UeXBlKCk7Cn0KCi8vZnVuY3Rpb24yCnRlbXBsYXRlPD4Kdm9pZCBjYWxsPHZvaWQ+KCkKewogICAgLy9mdW5jdGlvbiB3aXRob3V0IHJldHVybiB0eXBlICAKICAgIHN0ZDo6Y291dCA8PCAiZnVuY3Rpb24yXG4iOwp9CgppbnQgbWFpbigpIHsKICAgIGNhbGw8aW50PigpOyAgLy9jYWxsIGZ1bmN0aW9uMQogICAgY2FsbDx2b2lkPigpOyAvL2NhbGwgZnVuY3Rpb24yIAp9