是否可以在C ++ 11中推导出非类型模板参数的类型?

时间:2017-12-22 23:39:49

标签: c++ c++11 templates

C ++ 17具有这个很好的功能,允许您使用auto关键字声明非类型模板参数:

template<auto a>
void foo();

允许推导出这种参数类型,如:

foo<3>() <-- a has deduced type of 'int'

不幸的是,我必须使用不支持C ++ 17的编译器,并且不完全支持C ++ 11(它缺乏对标准库的支持)。 所以我的问题是:使用C ++ 11可以达到相同的效果吗?

我能想到的唯一方法是使用宏:

template< typename T, T a>
void foo();

#define CALL_FOO( x ) foo< decltype(x), x >()

0 个答案:

没有答案