其他分享
首页 > 其他分享> > c-GMOCKing接口时std :: any的类型不完整

c-GMOCKing接口时std :: any的类型不完整

作者:互联网

这个代码段存在一个非常奇怪的编译问题:

#include <any>
#include <gmock/gmock.h>


struct Class
{
    virtual std::any get(int, int) = 0;
};


struct MockClass: Class
{
    MOCK_METHOD2(get, std::any(int, int));
};


int foo()
{
    MockClass dd;
}

错误gcc 9.1.0:

/usr/include/c++/9.1.0/type_traits:131:12: error: incomplete type ‘std::is_copy_constructible<testing::internal::ReferenceOrValueWrapper<std::any> >’ used in nested name specifier

铛8.0.0:

/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../include/c++/9.1.0/type_traits:132:31: error: no member named 'value' in 'std::is_copy_constructible<testing::internal::ReferenceOrValueWrapper<std::any> >'

如果我将std :: any替换为std :: string或任何其他常见类型,则代码会编译.

解决方法:

这是libstdc错误90415.

我不确定这是什么引起std :: any的问题.请注意,您的示例在使用libstdc的clang上失败,但在使用libc时成功.

标签:c,gcc,c17,gmock
来源: https://codeday.me/bug/20191014/1912585.html