【发布时间】:2016-05-21 12:49:34
【问题描述】:
我是 BOOST_AUTO 新手,这是一个基本问题。
我定义了自己的类并将其与 BOOST_AUTO 一起使用。根据教程:
如果您定义自己的类型,Typeof 库无法处理它 除非你让它知道这种类型。你告诉 Typeof 库 通过“注册” this 来了解类型(或模板) 类型/模板。
但是我下面的代码没有注册任何东西并且在 VC++2010 中正确运行。这个注册真的有必要吗?我做错什么了吗?
#include <boost/typeof/typeof.hpp>
using namespace std;
namespace NS1 {
struct X {
X(const X& x){s=x.s+1;}
X(){s=3;}
int s;
};
}
int _tmain(int argc, _TCHAR* argv[])
{
NS1::X x;
BOOST_AUTO(y,x);
cout << y.s << endl;
return 0;
}
输出:4
【问题讨论】:
-
您的编译器可能支持常规的
auto。 -
哦,是的! msdn.microsoft.com/en-us/library/dd293615(v=vs.100).aspx。这是否意味着在 VC++2010 中 BOOST_AUTO 会自动 #define 为
auto? -
@JavaMan:没关系,用普通的
auto就行了。 -
@JavaMan,从我对 Boost 的了解来看,如果编译器支持,大多数像这样的库都非常擅长直接使用更新的功能。
标签: c++ boost template-meta-programming typeof