Это потому, что применяется разрешение перегрузки, и поскольку аргумент для конструктора b1
равен b
, а b
оказывается неконстантным lvalue, тогда выбирается конструктор, принимающий неконстантное lvlalue. И это первый. Интересно, что оба являются конструкторами копирования, но ваш код будет одинаково действителен только с последним.