Несоответствие в конструкторах `std :: tuple` при использовании` std :: any 'elementsC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Несоответствие в конструкторах `std :: tuple` при использовании` std :: any 'elements

Сообщение Anonymous »

Этот код работает так же, как и ожидалось: < /p>

Код: Выделить всё

#include 
#include 

int main() {
std::tuple t1{3};
std::tuple t2{t1};

std::cout 
#include 
#include 
#include 

int main() {
std::tuple t1{3};
std::tuple t2{t1};

std::cout 
[code]#include 
#include 
#include 

int main() {
std::tuple t1{3, 3.14};
std::tuple t2{t1};

std::cout 
tuple( const tuple& other ); // (5)
< /code>
It seems that the unary tuple t2< /code> строится с (2) вместо (4) или (5), в то время как кортеж с двумя элементами строится с (4) или (5). < /p>
Так что у меня есть два вопроса < /p>

[*] Это ожидаемое поведение или является ошибкой в ​​реализации STL? Я связан с STDLIBC ++ и LIBC ++ и оба потерпели неудачу. < /Li>
 Как я могу обойти эту проблему? Он работает, когда я впервые объявляю T2 
, а затем использую оператор назначения для копирования T1 , но я не хочу этого делать, поскольку я мог бы использовать STD :: MOVE для производительности, но код не удастся даже в этом случае.


Подробнее здесь: https://stackoverflow.com/questions/794 ... y-elements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»