gpt4 book ai didi

c++ - 如何强制 C++ 模板的特定实例实例化?

转载 作者:IT老高 更新时间:2023-10-28 13:58:12 27 4
gpt4 key购买 nike

见标题。我有一个模板。我想强制实例化模板的特定实例。我该怎么做?

更具体地说,你能强制一个抽象模板类实例化吗?


我可能会详细说明,因为我有同样的问题。就我而言,我正在构建一个库,一些模板实现很大并且包含很多东西,但只为几种类型生成。我想在库中编译它们并导出所有方法,但不要在任何地方都包含带有代码的 header 。

即:

template<class T>
OS_EXPORT_DECL class MyTmpl
{
T *item1;
public:
inline T *simpleGetT() { return(item1); } /* small inline code in here */ }
T *doSomeReallyBigMergeStuff(T *b); // note only declaration here
};

// *** implementation source file only seen inside library

template<class T>
MyTmpl<T>::doSomeReallyBigMergeStuff(T *b)
{
... a really big method, but don't want to duplicate it,
so it is a template ...
}

我当然可以引用库中的所有方法,这将迫使它们编译和导出,但不希望将不需要的代码添加到库中,例如项目的参数格式和调用它们的代码等等

?????具体来说,我正在为多个版本的 MSC 和 GCC 以及 intel 编译器构建库。

最佳答案

您还可以尝试显式实例化:

template class vector<int>;                    // class
template int& vector<int>::operator[](int); // member
template int convert<int,double>(double); // function

关于c++ - 如何强制 C++ 模板的特定实例实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152002/

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