gpt4 book ai didi

c++ - 如何发布带有模板实现的头文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:35 25 4
gpt4 key购买 nike

我们正在创建一组具有公共(public) API 的库,供不同的第三方使用。一些库是纯 C 的,所以很明显它们有一个 C 风格的头文件,其中包含函数和结构定义以及相应的库。他们没事。

一些库是使用中等复杂的 C++(针对较旧的编译器)编写的,因此我们实现了某种形式的著名的 pimpl 惯用语。这也可以。

另一方面,头文件的重要部分是使用大量模板化代码的 C++。知乎Why can templates only be implemented in the header file?但也不愿意向不应该看到它们的人透露太多实现细节留下代码。

所以我很困惑:是否有一种首选的方式来分发主要包含模板的头文件?有哪些好的做法、最佳方法以及提示和技巧?

最佳答案

查看 C++ 编译器的头文件以获取灵感。标准 C++ 库充满了模板,您通常会在头文件中找到所有模板代码。

话虽如此,如果特定模板打算与少量可能的类(或值)一起用作模板参数,您确实可以选择在库本身内部显式实例化模板,只留下裸模板声明在头文件中可见。

以更简单的 C++11 之前的场景为例,C++ 库通常会提供 std::basic_string仅实现 std::basic_string<char>std::basic_string<wchar_t> ;并在库本身中留下一堆模板代码,只有一个空的 std::basic_string头文件中可见的模板声明。

关于c++ - 如何发布带有模板实现的头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643809/

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