小编PJK*_*136的帖子

使用 Clang 10 使用显式模板实例化 ~queue 的未定义引用

以下代码未链接 Clang 10,但在 GCC 和 Clang 9 上成功:

#include <queue>

template <typename T>
class A
{
public:
    void f();

private:
    std::queue<int> q;
};

template <typename T>
void A<T>::f()
{
    q = {};
}

template class A<int>;

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我从编译器得到的是:

在线示例

/opt/compiler-explorer/gcc-9.3.0/lib/gcc/x86_64-linux-gnu/9.3.0/../../../../x86_64-linux-gnu/bin/ld: /tmp/example-f70f65.o: in function `A<int>::f()':

/home/ce/<source>:16: undefined reference to `std::queue<int, std::deque<int, std::allocator<int> > >::~queue()'

clang-10: error: linker command failed with exit code 1 (use -v to see invocation)

Compiler returned: 1
Run Code Online (Sandbox Code Playgroud)

如果我替换std::queuestd::vector, …

c++ templates c++11 clang++

5
推荐指数
1
解决办法
132
查看次数

标签 统计

c++ ×1

c++11 ×1

clang++ ×1

templates ×1