没有匹配的函数来调用“ make_shared”

丹尼尔·戈德法布

每当我尝试使用接受任何参数的构造函数时,都会收到编译器错误“没有匹配的函数来调用'make_shared'”。因此,例如:

std::shared_ptr<int> foo = std::make_shared<int> ();

工作良好。但,

std::shared_ptr<int> foo = std::make_shared<int> (10);

给出以下错误:

/usr/bin/clang  -g -Wall -Wextra -Wc++11-extensions -c ./test.cpp
./test.cpp:7:30: error: no matching function for call to 'make_shared'
  std::shared_ptr<int> foo = std::make_shared<int> (10);
                         ^~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:4700:1: note: candidate function [with _Tp = int, _A0 = int]
  not viable: expects an l-value for 1st argument
make_shared(_A0& __a0)

我直接从此处http://www.cplusplus.com/reference/memory/make_shared/获取了上述代码,该代码在cpp.sh网站上运行良好。我怀疑编译器设置有问题。在Macbook上的iTerm中运行。另外,即使我删除了上面显示的clang的各种选项,我也会遇到相同的错误。有任何想法吗?我的头文件是否可能需要更新?它是从2015年9月4日开始的。似乎最近才足以使C ++ 11正常工作。

$ /usr/bin/clang --version
Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin17.7.0
Thread model: posix

$ ls -l /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory
-rw-r--r--  1 root  wheel  174919 Sep  4  2015 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory
0

错误消息正在抱怨您使用prvalue 10尝试使用

int avar = 10;
auto foo = std::make_shared<int> (avar);

有趣的是,使用左值时会发生什么。

您是否在本地构建标准库?如果是这样,也许您可​​以尝试重新构建或从某个地方获取预构建的库。

我在https://godbolt.org/上使用configurationx86-64 clang 7.0.0测试了代码-std=c++11它工作正常。我猜即使是使用iOS的人也应该很好。

我还看到您-Wc++11-extensions在构建时使用尝试使用-std=c++11代替吧?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在仅具有受保护或私有构造函数的类上调用:: std :: make_shared?

通过make_unique / make_shared调用initializer_list构造函数

没有匹配的函数来调用sort()

没有匹配的函数来调用类构造函数

我可以将std :: make_shared与没有参数构造函数的结构一起使用吗?

没有匹配的函数来调用“ getline”

shared_ptr的静态成员函数make_shared

有什么办法可以欺骗std :: make_shared使用默认初始化吗?

没有模板参数的情况下提升make_shared

带有dtor和libc ++的std :: make_shared无法编译

带有std :: make_shared的std :: weak_ptr分配

shared_ptr <>到数组自定义删除器(带有make_shared)

私有构造函数和make_shared

C ++ make_shared两次调用析构函数

错误:没有匹配的函数来调用“ make_pair”

使用std :: make_shared以std :: array作为参数来初始化std :: shared_ptr

为什么make_shared在单独的调用中分配相同的地址?

函数std :: make_shared <vector>的参数过多

make_shared是否可能没有任何异常但返回nullptr?

带有std :: make_shared的密码成语。xmemory无法访问私钥构造函数

没有匹配的函数来调用类中的成员函数

Xcode / clang更新Xcode后不再编译C ++ 14代码:“没有名为make_shared的成员”

没有匹配的函数来调用

为什么不能使用std :: make_shared的实例化作为函数的指针?

C ++:没有匹配的函数来调用

多次调用make_shared()时的shared_ptr垃圾回收

共享指针仅通过std :: shared_ptr初始化。std :: make_shared构造函数不起作用

std::make_shared 值是否初始化其默认构造函数未初始化的类成员?

没有匹配的函数来调用“strlen”