草庐IT

OrderedCall

全部标签

c++ - 调用函数对象时如何保证参数评估的顺序?

howtoavoidundefinedexecutionorderfortheconstructorswhenusingstd::make_tuple上问题的答案引发了一次讨论,在讨论中我了解到可以保证构造函数的参数评估顺序:使用braced-init-list可以保证从左到右的顺序:T{a,b,c}表达式a、b和c按给定顺序计算。情况就是这样,即使类型T只是定义了一个普通的构造函数。显然,并非所有被调用的东西都是构造函数,有时在调用函数时保证评估顺序会很好,但没有像brace-argument-list这样的东西来调用函数对他们的论点进行定义的评估顺序。问题变成了:对构造函数的保证是

c++ - 调用函数对象时如何保证参数评估的顺序?

howtoavoidundefinedexecutionorderfortheconstructorswhenusingstd::make_tuple上问题的答案引发了一次讨论,在讨论中我了解到可以保证构造函数的参数评估顺序:使用braced-init-list可以保证从左到右的顺序:T{a,b,c}表达式a、b和c按给定顺序计算。情况就是这样,即使类型T只是定义了一个普通的构造函数。显然,并非所有被调用的东西都是构造函数,有时在调用函数时保证评估顺序会很好,但没有像brace-argument-list这样的东西来调用函数对他们的论点进行定义的评估顺序。问题变成了:对构造函数的保证是