Search
Write a publication
Pull to refresh
0
0
Send message

Замечение по коду -

  constexpr tuple(T&&... args) {
    initialize_storage(std::make_index_sequence<sizeof...(T)>(), std::forward<T>(args)...);
  }

Здесь std:: forward не нужен, у вас здесь всегда rvalue ссылки. Можно обойтись std::move.

Чтобы конструировать tuple не из rvalue ссылок, то нужен шаблонный конструктор. Там и нужно использовать std::forward:

  template<typename... U>
  constexpr tuple(U&&... args) {
    initialize_storage(std::make_index_sequence<sizeof...(T)>(), std::forward<U>(args)...);
  }

И тогда придётся переделать initialize_storage, чтобы она принимала эти forward-нутые типы

Information

Rating
Does not participate
Registered
Activity

Specialization

System Software Engineer, Application Developer
Intern
C++
Compilers
System Programming
Linux
Git