3
在Visual Studio 2012中有什麼方法將函數模板限制爲特定類型?在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;
}
交叉編譯器解決方案將是最好的。任何選擇?
我不會說這是如何使用enable_if或如何正常使用。這只是爲了繞過VS2012缺乏對函數中默認模板參數的支持。 – Rapptz
@Rapptz:這是enable_if旨在被使用的原始方式。相對於enable_if,默認的函數模板參數是一個新事物。 – Puppy
@DeadMG我不會不同意。但是由於C++ 11通常放置在模板參數中。無論如何,如果你的編譯器不支持它,這是一個完美的解決方法。 – Rapptz