#include <iostream>
#include <string>
#include <vector>
#include <boost/regex.hpp>
#include <boost/type_index.hpp>
class Widget
{
};
template<typename T>
void f(const T& param)
{
using boost::typeindex::type_id_with_cvr;
std::cout << "T = " << type_id_with_cvr<T>().pretty_name() << std::endl;
std::cout << "Param = " << type_id_with_cvr<decltype(param)>().pretty_name() << std::endl;
}
std::vector<Widget> createVec()
{
std::vector<Widget> vec(5);
return vec;
}
int main()
{
const auto vw = createVec();
if (!vw.empty())
f(&vw[0]);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPiAgCiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxib29zdC9yZWdleC5ocHA+IAojaW5jbHVkZSA8Ym9vc3QvdHlwZV9pbmRleC5ocHA+CgpjbGFzcyBXaWRnZXQKewoJCn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIGYoY29uc3QgVCYgcGFyYW0pCnsKCXVzaW5nIGJvb3N0Ojp0eXBlaW5kZXg6OnR5cGVfaWRfd2l0aF9jdnI7CglzdGQ6OmNvdXQgPDwgIlQgPSAgIiA8PCB0eXBlX2lkX3dpdGhfY3ZyPFQ+KCkucHJldHR5X25hbWUoKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIlBhcmFtID0gICIgPDwgdHlwZV9pZF93aXRoX2N2cjxkZWNsdHlwZShwYXJhbSk+KCkucHJldHR5X25hbWUoKSA8PCBzdGQ6OmVuZGw7Cn0Kc3RkOjp2ZWN0b3I8V2lkZ2V0PiBjcmVhdGVWZWMoKQp7CglzdGQ6OnZlY3RvcjxXaWRnZXQ+IHZlYyg1KTsKCXJldHVybiB2ZWM7Cn0KaW50IG1haW4oKSAKewoJY29uc3QgYXV0byB2dyA9IGNyZWF0ZVZlYygpOwoJaWYgKCF2dy5lbXB0eSgpKQoJZigmdndbMF0pOwp9Cg==