让我们看一些数学向量的例子。根据空间维度,它由不同数量的组件组成。
在C++中我可以使用SFINAE概念来实现它。
template <size_t D, typename T, typename = void>
struct Vector;
// Implement for 2D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 2)>>
{
T x;
T y;
}
// Implement for 3D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 3)>>
{
T x;
T y;
T z;
}
// Implement for 4D
template<size_t D, typename T>
struct Vector <D, T, std::enable_if_t<(D == 4)>>
{ …Run Code Online (Sandbox Code Playgroud)