这是一些模板
constexpr
功能。
template <class> constexpr void function();
我想强制程序员使用特定的模板参数实例化函数。
template void function<int>(); // the program is well-formed
如果程序员没有这样做,我想要一个编译时错误。
如何实现这一目标?
最简单的例子是使用
static_assert
,这样无效的模板就无法被实例化(从而编译):
#include <type_traits>
template <class T> constexpr void function() {
static_assert(std::is_same_v<T, int>);
// ... function implementation
}
int main() {
function<int>();
//function<unsigned int>();
//function<float>();
}