Защо е позволено неявно преобразуване от pair‹int64_t,int64_t› в pair‹int,int›?

Забелязах някои случаи, при които std::pair ще бъде имплицитно преобразуван в std::pair от различен тип без предупреждение, но не мога да разбера защо. Прегледах конструкторите за std::pair и не мога да го разбера. Може ли някой да ми обясни това?

Пример:

 std::pair<int,int> a = std::pair<int64_t, int64_t>(1,2);

Не дава предупреждения с clang -Wall -Weeverything.


person leecbaker    schedule 27.08.2014    source източник
comment
дубликат ли е на stackoverflow.com/questions/25535106/ ?   -  person Slava    schedule 27.08.2014
comment
Просто прочетете препратката cplusplus.com/reference/utility/pair/operator=   -  person    schedule 27.08.2014


Отговори (1)


Конструкторът

template<class U, class V> pair(const pair<U, V>& p);

позволява копиране от всякакви двойки, при условие че първият елемент от p може да бъде преобразуван в първия елемент от конструираната двойка и същото за вторите елементи.

person Wojtek Surowka    schedule 27.08.2014