从不同类型的容器的迭代器初始化向量

sha*_*yex 4 c++ iterator vector language-lawyer

提供以下代码:

#include <iterator>
#include <vector>

int main()
{
    char arr[3] = { 1,2,3 };
    std::vector<char> vec = { 1,2,3 };

    std::vector<int> vec_one(std::begin(arr), std::end(arr));
    std::vector<int> vec_two(vec.begin(), vec.end());
}
Run Code Online (Sandbox Code Playgroud)

是否根据普通类型转换规则定义或定义了初始化vec_onevec_two未定义的实现?
如果交换charint类型怎么办?

Bat*_*eba 5

他们都很好,受到转换时,应用相同的规则charint(所以不担心有),并intchar,这将再次受到正常的规则:int必须足够小,以适应一个char,如果charsigned(否则行为未定义),如果char是,则定义良好的环绕行为unsigned.