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;
}
Решение перекрестного компилятора было бы лучшим. Любая альтернатива?
Я бы не сказал, что это означает, что use_if предназначен для использования или как он обычно используется. Это просто для того, чтобы обойти VS2012 отсутствие поддержки параметров шаблона по умолчанию в функциях. – Rapptz
@Rapptz: Это был оригинальный способ, с помощью которого enable_if должен был использоваться. Параметр шаблона функции по умолчанию - это новая вещь, относящаяся к enable_if. – Puppy
@DeadMG Я не соглашусь. Однако, поскольку C++ 11 обычно помещается в параметры шаблона. В любом случае, это идеальное решение, если вашему компилятору не хватает поддержки. – Rapptz