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