explicit-instantiation

    0热度

    1回答

    我正在写一些代码,我想发布为.h文件和静态库。代码是使用C++模板编写的,在.cpp文件中定义时使用.h文件中的类声明。我使用了“显式实例化”技巧,可以将代码编译到静态库中。明确的实例化被添加到.cpp文件的末尾。我写了一些代码来测试这个库。它在macos和windows上工作正常,但在ubuntu上它返回“未定义参考”链接错误。看起来“显式实例化”技巧在Ubuntu上不起作用。有人知道为什么吗?

    11热度

    1回答

    我不确定它是Clang 3.2中的错误还是违反了C++ 03,但似乎模板类的模板化构造函数的显式实例化失败,但显式实例化了模板化模板类的成员函数成功。 例如,下面的编译没有一个问题都铛++和g ++: template<typename T> class Foo { public: template<typename S> void Bar(const Foo<S>& f

    0热度

    1回答

    从DLL(Visual Studio 2008编译器)使用(专用)模板类时,出现链接器错误 - 未解析的符号。我试图用Stackoverflow中描述的'显式模板实例化'技巧,但它不起作用。我把它分解成一个非常简单的可重现的例子: 我有一个动态库(DLL)'MyTemplates.lib'与头文件'MyTemplates.h'(和源文件'MyTemplates.cpp'没有任何代码它只是包含这个头

    9热度

    1回答

    这个问题正在考虑显式实例化模板类。 考虑从另一个模板类A<T>来源的模板类B<T>。我想明确instanicate B<T>,因为它的方法是从动态链接调用的,所以方法必须是实例化的,尽管它们没有在代码本身中调用。当然,也会调用从A<T>继承的方法,所以它们也必须立即执行。 看来,C++不实例化基地类时明确instanciating模板类,如问这样一个问题: Do Explicit Instanti

    0热度

    3回答

    问题是我的应用程序尝试向/system/csc中的现有xml文件添加行。 我需要一个函数来检查文件内部是否有X行,如果它在那里不应该添加行也必须将该行放在文件中存在的另一行之前。

    -1热度

    1回答

    为什么我会使用显式实例化函数模板,对于一个类型?如果我不使用函数的显式实例化,那么该模板用于创建必要的函数,那么使用显式的实例化? template <class Any> void Swap (Any &, Any &); // template prototype template <> void Swap<job>(job &, job &); // explicit specia

    2热度

    1回答

    可能重复: Dynamic dispatching of template functions? 我想用非类型模板来创建网格单元有不同的内存空间,而不必使用动态分配堆上的内存,例如 template <int cell_size> class myCell {...} 单元格大小有限(大约10),因此我可以很容易地明确地实例化所有单元格。但是,需要哪一个单元在编译时不知道,但仅在运行时才知道

    0热度

    1回答

    假设有这样的代码: template <typename T> CLASS_KEY1 X{}; PREFIX template CLASS_KEY2 X<int>; 其中CLASS_KEY1,CLASS_KEY2和PREFIX是宏。 CLASS_KEY1和CLASS_KEY2可扩展到class,struct或union关键字。 PREFIX可以扩展到空的字符集或extern关键字。 这里

    17热度

    6回答

    考虑下面的头文件: // Foo.h class Foo { public: template <typename T> void read(T& value); }; 我要显式实例在所有类型的源文件Foo::read成员函数模板包含在boost::mpl::vector: // Foo.cc #include <boost/mpl/vector.hpp

    -3热度

    1回答

    对于我的代码 template Signal<float>; template Signal<bit_t>; template Signal<byte_t>; template Signal< std::complex<float> >; template Signal<int>; 工作时,我得到的编译错误 error at signal_T.cpp:437: error: exp