小编Lay*_*ayl的帖子

使用简单模板时如何修复 CLANG 中的“未定义符号”

我正在尝试使用模板结构实现一个简单的系统,代码非常简单并且可以使用 MSVC 编译良好,但我无法理解为什么 CLANG 给我这个错误:“lld-link : error : undefined symbol: public: static struct FMyStruct常量 TSpec<1>::m_struct"

我在 Windows 64 位机器上使用 VisualStudio IDE 进行编译,但使用 CLANG LLVM 作为编译器。该代码在 MSVC 中运行良好。我将问题简化到最低限度,我尝试将所有内容放入一个 cpp 文件中,但没有结果。我还尝试了显式模板实例化。我想要兼容 C++14,而不是 C++17。我尝试过的一件事是,将 m_struct 成员声明为内联变量,但随后我收到此警告:“内联变量是 C++17 扩展”

struct FMyStruct
{
    const int _p0;
    const int _p1;
    const int _p2;
};

template< int > struct TSpec {
    static constexpr FMyStruct m_struct = { 0, 0, 0 };
};

FMyStruct
Function( int i )
{
    return  TSpec< 1 >::m_struct;
}

int main()
{
    return …
Run Code Online (Sandbox Code Playgroud)

c++ llvm-clang c++14

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

标签 统计

c++ ×1

c++14 ×1

llvm-clang ×1