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 に答える