gpt4 book ai didi

c++ - C++ 中的参数查找

转载 作者:可可西里 更新时间:2023-11-01 17:56:36 24 4
gpt4 key购买 nike

<分区>

使用 c++14 时遇到 gcc 问题。编译下面的代码时出现错误

"call of overloaded ‘make_unique(std::__cxx11::string)’ is ambiguous"

但是,如果我删除 make_unique 的局部定义,我也会得到一个错误:

"‘make_unique’ was not declared in this scope"

似乎不可能同时出现这两个错误,因为 std::make_unique 要么由于 ADL 被拉入,要么没有。这只是 gcc 的问题还是有其他问题?

作为引用,为非模板标准函数(例如 stoi)替换 make_unique 摆脱了“未在此范围内声明”错误,这让我相信这是 gcc 的问题。

#include <string>
#include <memory>

template <typename T, typename... Args>
inline std::unique_ptr<T> make_unique(Args&&... args)
{
return std::unique_ptr<T>( new T(std::forward<Args>(args)...) );
}

struct A
{
A(std::string a){ }
};

int main()
{
auto a = make_unique<A>(std::string());
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com