kyk*_*yku 2 c++ initialization c++11
valueA和valueB的以下初始化是否需要未定义的行为?
int array[2] = {1,2};
int index = 0;
int valueA = array[index++], valueB = array[index++];
Run Code Online (Sandbox Code Playgroud)
c ++ 98和c ++ 11之间有什么变化吗?
行为是明确的.来自C++ 11 draftn3290§8 声明:
声明中的每个init-declarator都会被单独分析,就好像它本身就在声明中一样.
所以你的代码相当于:
...
int valueA = array[index++];
int valueB = array[index++];
Run Code Online (Sandbox Code Playgroud)
我没有C++ 98标准,但ISO/IEC 14882:2003("C++ 03")中也有相同的措辞.