Clang++Xcode 4.4非静态成员初始化和移动构造函数

Clang++ Xcode 4.4 Non Static Member Initialization and Move constructor

本文关键字:移动 构造函数 静态成员 Clang++Xcode 初始化      更新时间:2023-10-16

我正在将Xcode 4.4与山狮一起使用。我似乎不明白为什么模板中的非静态成员初始化会调用变量的移动构造函数。有什么办法可以克服这个错误吗?

示例代码:

#include <iostream>
#include <atomic>
//
// This class can compile
//
class Working
{
public:
    int GetValue() { return value_; }
private:
    std::atomic<int> value_{0};
};
//
// This class cannot compile
//
template <typename Ty1>
class NotWorking
{
public:
    int GetValue() { return value_; }
    private:
        std::atomic<int> value_{0}; // <---- error here
};
int main(int argc, const char * argv[])
{
    Working working;
    NotWorking<int> not_working;
    return 0;
}

Xcode 4.4和Clang在那一行抛出错误说:

"Copying member subobject of type 'std::atomic<int>' invokes deleted constructor"

这看起来像是开源svn-trunk存储库上的一个clang bug。你能在这里提交一份针对clang的错误报告吗:http://llvm.org/bugs/?

谢谢!