класс контейнер со следующим интерфейсом:C++ порядок выполнения при передаче аргументов функции
template <typename T> class DynArray {
/// Returns the number of elements in the array.
inline size_t GetCount();
/// Releases the internal memory from the \class DynArray
/// and returns it. The memory must be deallocated manually.
inline T* Release();
}
В вызове функции, как
SomeFunction(arr.GetCount(), arr.Release())
я ожидал бы arr.GetCount()
быть вызван до arr.Release()
, но обратное, по-видимому, происходит, в результате чего первый параметр передается значением 0
вместо фактического размера массива. Я использую Visual Studio 2012.
Знает ли стандарт C++ что-то конкретное относительно порядка выполнения при оценке параметров функции?
стандарт не задает порядок выполнения при передаче в качестве параметров, это оставляется разработчику: http://stackoverflow.com/questions/2934904/order-of-evaluation-in-c-function-parameters – EdChum