3

Visual Studio 2012 中是否有任何方法可以将函数模板限制为特定类型?

这个适用于 GCC,但 MSVC 生成error C4519: default template arguments are only allowed on a class template.

#include <type_traits>

template <class float_t, class = typename std::enable_if< std::is_floating_point<float_t>::value >::type>
inline float_t floor(float_t x)
{
    float_t result;
    //...
    return result;
}

交叉编译器解决方案将是最好的。有什么选择吗?

4

1 回答 1

3

通常,您会将其写为

template <class float_t>
typename std::enable_if< std::is_floating_point<float_t>::value, float_t>::type
  floor(float_x x) {...}

enable_if就是打算使用的方式。

于 2013-07-27T23:53:06.503 回答