#include
int main() {
using vec_t = std::vector;
vec_t v;
auto it1{std::move(v).begin()};// type is vec_t::iterator
auto it2{std::make_move_iterator(v.begin())}; // type is std::move_iterator
}
переменная IT1 имеет тип vec_t :: iterator , хотя begin () вызывает на r-value std :: move (v) , что может показаться мне естественным. Мне интересно, почему он не возвращает ove_iterator . Почему нет перегрузки RVALUE REF-квалификации BERT () ? Какая логика стоит?
В следующем коде: < /p> [code]#include int main() { using vec_t = std::vector; vec_t v; auto it1{std::move(v).begin()};// type is vec_t::iterator auto it2{std::make_move_iterator(v.begin())}; // type is std::move_iterator } [/code] переменная IT1 имеет тип vec_t :: iterator , хотя begin () вызывает на r-value std :: move (v) , что может показаться мне естественным. Мне интересно, почему он не возвращает ove_iterator . Почему нет перегрузки RVALUE REF-квалификации BERT () ? Какая логика стоит?
Простой шаблонный матричный класс 4x4, использующий встроенные функции вектора, поэтому необходима специализация шаблона для поддержки целочисленных типов и типов с плавающей запятой.
У меня есть следующий компилятор и установленные флаги:...
std::array::operator[] всегда возвращает ссылку на lvalue ( const если необходимо), но какой может быть смысл в использовании такой строки кода, которая допустима для C++?
std::array{1} = 3;
В конце концов, std::get немного более строгий, потому...