std :: atomic_is_lock_free(shared_ptr <t> *)没有编译</t>

时间:2014-02-10 05:32:28

标签: c++ c++11

我的简单代码如下:

#include <iostream>
#include <atomic>
#include <memory>

int main(void) {
    std::shared_ptr<int> p = std::make_shared<int>(5);
    std::cout << std::boolalpha << std::atomic_is_lock_free(&p) << std::endl;
    return 0;
}

但编译错误:

  

a.cpp:在函数'int main()'中:   a.cpp:7:60:错误:没有匹配函数来调用'atomic_is_lock_free(std :: shared_ptr *)'     std :: cout&lt;&lt; std :: boolalpha&lt;&lt; std :: atomic_is_lock_free(&amp; p)&lt;&lt;的std :: ENDL;                                                               ^   a.cpp:7:60:注意:候选人是:   在a.cpp:2:0中包含的文件中:   /usr/include/c++/4.8.2/atomic:804:5:注意:模板bool std :: atomic_is_lock_free(const std :: atomic&lt; _ITp&gt; *)        atomic_is_lock_free(const atomic&lt; _ITp&gt; * __a)noexcept        ^   /usr/include/c++/4.8.2/atomic:804:5:注意:模板参数扣除/替换失败:   a.cpp:7:60:注意:'std :: shared_ptr'不是从'const std :: atomic&lt; _ITp&gt;'派生的     std :: cout&lt;&lt; std :: boolalpha&lt;&lt; std :: atomic_is_lock_free(&amp; p)&lt;&lt;的std :: ENDL;                                                               ^   在a.cpp:2:0中包含的文件中:   /usr/include/c++/4.8.2/atomic:809:5:注意:模板bool std :: atomic_is_lock_free(const volatile std :: atomic&lt; _ITp&gt; *)        atomic_is_lock_free(const volatile atomic&lt; _ITp&gt; * __a)noexcept        ^   /usr/include/c++/4.8.2/atomic:809:5:注意:模板参数扣除/替换失败:   a.cpp:7:60:注意:'std :: shared_ptr'不是来自'const volatile std :: atomic&lt; _ITp&gt;'     std :: cout&lt;&lt; std :: boolalpha&lt;&lt; std :: atomic_is_lock_free(&amp; p)&lt;&lt;的std :: ENDL;

没有template <class T> bool atomic_is_lock_free( const std::shared_ptr<T>* p );重载。正如here所说,有。我的代码一定有错误,有人可以帮帮我吗?谢谢!

0 个答案:

没有答案