gpt4 book ai didi

c++ - 有什么方法可以诱使编译器允许头文件中的模板特化吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:02:50 24 4
gpt4 key购买 nike

通常,当您编写模板类并对该类中的函数进行特化时,您需要将特化放在 .cpp 文件中,因为它是具体定义(而不是模板定义)。如果您只有一个小函数需要专门化,虽然这有点烦人,但有时您可能会忘记在该 .cpp 文件中查找最后一个定义,这可能会导致混淆。

在这种情况下,最好在头文件中包含一个专门化和模板定义的其余部分。有什么技巧可以实现这一目标吗?

最佳答案

使用 inline 关键字:

template <unsigned N>
unsigned get_const()
{
return N;
}

template <>
inline unsigned get_const<42>()
{
throw "meaning of life";
}

关键字表示多个定义应该假定为相同,因此不是错误。 (这与 static 正交,它在自己的翻译单元中保留重复定义。)

请注意,这适用于所有函数,而不仅仅是模板或特化。

关于c++ - 有什么方法可以诱使编译器允许头文件中的模板特化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com