如何解决不允许使用多个版本的默认特殊成员函数 (MSVC)
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 举报,一经查实,本站将立刻删除。