问题描述
我有一些类可以使用重载来接收东西 *this 的方法应用,因此可以链接。
但是,在带有 /std:c++latest 的 Microsoft Visual C++(最新)上 警告 C4866(编译器可能不会强制执行从左到右的评估)突然出现。知道为什么以及如何 防止这种情况?
参数(这里的构造函数sv_holder必须是 一些更复杂的类型 - 它可以在没有警告的情况下为 pod 工作 输入)。
#include <iostream>
#include <string_view>
class sv_holder
{
public:
sv_holder(std::string_view v) : m_sv(v) {}
std::string_view m_sv;
};
class C
{
public:
C() {}
C &accept(const sv_holder &) { return *this; }
template <typename T> C &operator<<(const T &t)
{
std::cout << t;
return *this;
}
};
void fail_function()
{
C c;
c.accept(sv_holder(__FILE__)) << "stream test";
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)