#include <iostream>
#include <boost/call_traits.hpp>
using namespace std;
template<typename T>
struct Test
{
T t;
Test( typename boost::call_traits<T>::param_type t_ ) : t(t_) {}
};
Test<int> foo()
{
return 3;
}
int main() {
auto res = foo();
cout<<"foo returns "<<res.t<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3QvY2FsbF90cmFpdHMuaHBwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IFRlc3QKewoJVCAgICB0OwoJVGVzdCggdHlwZW5hbWUgYm9vc3Q6OmNhbGxfdHJhaXRzPFQ+OjpwYXJhbV90eXBlIHRfICkgOiB0KHRfKSB7fQp9OwoKVGVzdDxpbnQ+IGZvbygpCnsKCXJldHVybiAzOwp9CgoKaW50IG1haW4oKSB7CgkKCWF1dG8gcmVzID0gZm9vKCk7Cgljb3V0PDwiZm9vIHJldHVybnMgIjw8cmVzLnQ8PCJcbiI7CglyZXR1cm4gMDsKfQ==