像这样的东西:
template< typename Tdummy = T, typename = typename std::enable_if< std::is_floating_point< Tdummy >::value >::type >
void some_method()
{
}
编辑详细说明。这将导致以下结果。编译器只会生成带有浮点模板参数的some_method()
for 。ClassName
它不会为非浮动类型生成,并会导致编译时错误。
#include <type_traits>
template <typename T>
class ClassName
{
// instance variables, etc..
template< typename Tdummy = T, typename = typename std::enable_if< std::is_floating_point< Tdummy >::value >::type >
void some_method()
{
// do stuff, but only for floating point types
}
void some_general_method
{
// general stuff for all types
}
};
int main()
{
ClassName< float > bar;
ClassName< int > foo;
bar.some_general_method(); // OK
foo.some_general_method(); // OK
bar.some_method(); // OK
foo.some_method(); // Compile-time ERROR
return( 0 );
}