类型推断:
#include <iostream> #include <vector> #include <string> #include <boost/typeof/typeof.hpp> using namespace std; vector<string> func(){ vector<string> v(10); return v; } int _tmain(int argc, _TCHAR* argv[]) { BOOST_TYPEOF(2.0) x=2.0*3; BOOST_AUTO(years,2+3); BOOST_AUTO(&a , new double[11]); BOOST_AUTO(p , new string("hello")); BOOST_AUTO(v , func()); return 0; }
不能复制的类
#include<boost/utility.hpp> using namespace std; //不能复制的类 class demo : public boost::noncopyable{ }; int _tmain(int argc, _TCHAR* argv[]) { demo a; demo b; //a=b; //a(b); return 0; }
//向typeof注册自定义类型
#include <iostream> #include <vector> #include <string> #include<boost/typeof/typeof.hpp> #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() using namespace std; //向typeof注册自定义类型 // namespace ex{ class demo_class{ int a,b; }; } BOOST_TYPEOF_REGISTER_TYPE(ex::demo_class) int _tmain(int argc, _TCHAR* argv[]) { BOOST_AUTO(x, make_pair("test",ex::demo_class())); cout<<typeid(x).name()<<endl; }
赋值:
#include <iostream> #include <vector> #include <string> #include <set> #include <map> #include <boost/assign.hpp> int _tmain(int argc, _TCHAR* argv[]) { using namespace boost::assign; std::vector<int>v; v+=1,2,3,4,5,9*10; std::set<std::string> s; s+="cpp","java","c","python"; std::map<int,std::string>m; m+=std::make_pair(1,"hello"),std::make_pair(2,"rollen"); }
#include <iostream> #include <vector> #include <string> #include <set> #include <list> #include <map> #include <boost/assign.hpp> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { using namespace boost::assign; std::vector<int>v; push_back(v)(1)(2)(3)(4); push_back(v),1,2,3,4,5; push_back(v),1,(2),3; list<int> l; push_front(l)(1)(2); set<double>s; insert(s)(12.23)(1.23); map<int,string>m; insert(m)(1,"name")(2,"age"); }