【发布时间】:2012-11-27 00:52:17
【问题描述】:
这是我想要做的:
template <typename T> struct Model
{
vector<T> vertices ;
#if T has a .normal member
void transform( Matrix m )
{
each vertex in vertices
{
vertex.pos = m * vertex.pos ;
vertex.normal = m * vertex.normal ;
}
}
#endif
#if T has NO .normal member
void transform( Matrix m )
{
each vertex in vertices
{
vertex.pos = m * vertex.pos ;
}
}
#endif
} ;
我见过examples 使用enable_if,但我不明白如何将enable_if 应用于这个问题,或者它是否可以应用。
【问题讨论】:
-
enable_if不用于检查成员是否存在,而是用于删除重载。 -
我不能用它来做类似的事情(上面编辑中的建议)吗?
-
不,您想要一个尚不存在的
static if。你想要的完全有可能,只是不会使用那样的语法。