#include <functional>
#include <iostream>
template<typename T>
struct mystruct
{
T variable;
};
int myfunc(int x)
{
return 2*x;
}
template<typename T>
int calculate(
mystruct<T> custom_struct,
std::function<T(T)> custom_func)
{
return custom_func(custom_struct.variable);
}
int main()
{
mystruct<int> A;
A.variable=6;
std::cout<<calculate<int>(A,myfunc)<<std::endl; // error here!!!
return 0;
}
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBteXN0cnVjdAp7CiAgICBUIHZhcmlhYmxlOwp9OwoKaW50IG15ZnVuYyhpbnQgeCkKewogICAgcmV0dXJuIDIqeDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KaW50IGNhbGN1bGF0ZSgKICAgIG15c3RydWN0PFQ+IGN1c3RvbV9zdHJ1Y3QsCiAgICBzdGQ6OmZ1bmN0aW9uPFQoVCk+IGN1c3RvbV9mdW5jKQp7CiAgICByZXR1cm4gY3VzdG9tX2Z1bmMoY3VzdG9tX3N0cnVjdC52YXJpYWJsZSk7Cn0KCmludCBtYWluKCkKewogICAgbXlzdHJ1Y3Q8aW50PiBBOwogICAgQS52YXJpYWJsZT02OwogICAgc3RkOjpjb3V0PDxjYWxjdWxhdGU8aW50PihBLG15ZnVuYyk8PHN0ZDo6ZW5kbDsgLy8gZXJyb3IgaGVyZSEhIQogICAgcmV0dXJuIDA7Cn0K