如何强制程序员实例化模板?

问题描述 投票:0回答:1

这是一些模板

constexpr
功能。

template <class> constexpr void function();

我想强制程序员使用特定的模板参数实例化函数。

template void function<int>(); // the program is well-formed

如果程序员没有这样做,我想要一个编译时错误。

如何实现这一目标?

c++ metaprogramming instantiation constexpr
1个回答
0
投票

最简单的例子是使用

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>();
}
© www.soinside.com 2019 - 2024. All rights reserved.