Microsoft Visual C++ 引发的警告 C4866

问题描述

我有一些类可以使用重载来接收东西 *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 (将#修改为@)