Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链式ostream内部行为及其在MSVC上的结果(与Clang比较)_C++_Visual C++_Variadic Templates_Operator Precedence_Post Increment - Fatal编程技术网

C++ 链式ostream内部行为及其在MSVC上的结果(与Clang比较)

C++ 链式ostream内部行为及其在MSVC上的结果(与Clang比较),c++,visual-c++,variadic-templates,operator-precedence,post-increment,C++,Visual C++,Variadic Templates,Operator Precedence,Post Increment,MSVC与GCC/Clang之间的流、内部字符串和操作顺序问题 各位好, 我最近才开始更认真地与MSVC合作,参与我的一个跨平台项目,在通过链式STD流测试输出时(即,根据,连续的obj.foo()),C++17直到VS 2017 15.7.14.0才得以实现。您必须升级或不升级链式STD流 测试 #包括 int f() { 静态int i=0; 返回i++; } int main() { std::cout Language->C++语言标准=默认值)我得到10,函数的计算结果是相反的 使用P

MSVC与GCC/Clang之间的流、内部字符串和操作顺序问题

各位好,

我最近才开始更认真地与MSVC合作,参与我的一个跨平台项目,在通过链式STD流测试输出时(即,根据,连续的
obj.foo()),C++17直到VS 2017 15.7.14.0才得以实现。您必须升级或不升级链式STD流

测试

#包括
int f()
{
静态int i=0;
返回i++;
}
int main()
{
std::cout Language->C++语言标准=默认值)我得到10,函数的计算结果是相反的

使用Properties->Configuration Properties->Language->C++语言标准=isoc++17标准(/std:C++17),我得到了预期的01

但是,如果我运行asker的代码…我仍然会看到错误的响应。删除大部分示例并添加额外的调试行(并将
cerr
替换为
cout
,以查看是否有一些深层次的魔力)

#包括
#包括
#包括
类样本{
std::字符串s;
int x=0;
公众:
Sample()=默认值;

friend std::ostream&Operator如果我阅读正确,那么直到15.7.14才实现的是不够好的。@user4581301这听起来值得回答。同意。我只需要多读一点来确认我阅读正确。我遇到了类似的问题,刚刚更新完Visual Studio,我仍然遇到同样的错误(但是谢谢)。您的附加编辑是不同的。在这种情况下,
println(i++,i++,i++)
调用仍然未排序,即使在c++17中也是如此。但在您的第一个案例中,似乎是msvc错误。谢谢,但更新没有任何改变,我将相应地编辑我的帖子。Smurf。@Saachz我所能提供的是VS 2015,并且可以确认它没有按预期工作。启动虚拟机以启动2019社区。好的,谢谢,最新版本st我似乎有这个问题(在我这边)。这里有一个很好的版本,同样的数据顺便说一句:我刚刚下载并安装了2019个。然后我自己就能看到。这个问题应该通过一个简单的
std::cout就可以看到。我可能是错了
I++
的噱头。我想我应该是对的,但是g++仍然在骂我,我得到了错误的答案。我可能错过了一些小技巧y、 替换为函数调用。正在更新答案 in func with 2 in func with 1 in func with 0 0 0 0 content : 0