Ответ 1
Это проблема с tuple
. См. его конструктор в С++ 11/14 - explicit
. И, следовательно, он не может участвовать в инициализации списка копий, что и делают внутренние скопированные-init-списки (внешние - это инициализация прямого списка).
Идея заключалась в препятствовать тому, чтобы вы могли обойти конструкторы класса explicit
через tuple
. Но в С++ 17 это будет изменено: если все типы кортежей сами по себе неявно конвертируются из соответствующего заданного типа, тогда тоже будет этот конструктор tuple
.
В вашем конкретном случае использования вы можете использовать std:: pair. Его конструктор никогда не explicit
.