问题描述
struct S
{
S(S const&) = default;
S(S&) = default;
};
?
上下文:
我试图通过将这两行添加到 S
(godbolt) 来处理以下代码中的歧义:
#include <utility>
struct Inner
{
Inner(int);
};
struct Outer
{
//Outer(Outer const&) = default;
//Outer(Outer&) = default;
template<class T>
Outer(T&& inner) : inner_(std::forward<T>(inner)) {}
Inner inner_;
};
auto foo()
{
auto v1 = Outer(1);
Outer v2 = v1;
return v2.inner_;
}
取消注释 S
中的两行使 GCC 满意,但 MSVC 产生错误 C2580。问题是——MSVC 是否正确?
上述 S
的错误是:
<source>(8): error C2580: 'S::S(S &)': multiple versions of a defaulted special member functions are not allowed
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)