这是我正在尝试做的事情:
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
} ;
我见过使用 enable_if
的 例子,但我不明白如何将 enable_if
应用到这个问题上,或者它是否可以应用。
原文由 bobobobo 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 C++11 , 这变得更加容易。
注意事项:
decltype
和sizeof
中命名非静态数据成员,而无需对象。