В C++ 11 допускаются неявные преобразования, разрешенные с помощью std :: tie?Разрешены ли неявные преобразования с помощью std :: tie?
Следующий код компилируется и запускается, но я не уверен точно, что происходит за кулисами или если это безопасно.
std::tuple<float,float> foo() { return std::make_tuple(0,0); }
double a, b;
std::tie(a,b) = foo(); // a and b are doubles but foo() returns floats
Возможно, это хорошая идея отметить, что неявное преобразование происходит внутри тела 'operator =', потому что во время вывода аргумента 'UTypes ...' неявные преобразования игнорируются. – TemplateRex