Сообщение Re[68]: Когда это наконец станет defined behavior? от 16.05.2023 4:46
Изменено 16.05.2023 7:25 so5team
Re[68]: Когда это наконец станет defined behavior?
Здравствуйте, ·, Вы писали:
s>> Мне надоело мусолить вашу тупость, поэтому вымараю то, что без мата комментировать уже невозможно.
·>Попробуй включить мозг и всё получится.
В вашем случае мозг придется включать психиатрам во время вашего лечения. Ибо откровенные проблемы с логическим мышлением прямо на поверхности:
·>Согласись, что до тебя наконец-то дошло, что с помощью const нельзя обеспечить иммутабельность и можно разойтись.
Есть заявление "нельзя". Есть простейший пример, который демонстрирует обратное:
Итого: тезис "нельзя" опровергнут примером (даже несколькими примерами по ходу обсуждения).
Дальнейшее упрямство поциента должно являться предметом интереса у специалистов-мозгоправов.
PS.
·>Это вы заврались. В приведённом тобой коде он не был изменяемым. Точнее, он там вынужденно изменяемый из-за наличия operator=.
Нет. Просто ваш "эквивалент" вовсе и не эквивалент: это и не value type, и не допускает модификацию значения in place.
s>> Мне надоело мусолить вашу тупость, поэтому вымараю то, что без мата комментировать уже невозможно.
·>Попробуй включить мозг и всё получится.
В вашем случае мозг придется включать психиатрам во время вашего лечения. Ибо откровенные проблемы с логическим мышлением прямо на поверхности:
·>Согласись, что до тебя наконец-то дошло, что с помощью const нельзя обеспечить иммутабельность и можно разойтись.
Есть заявление "нельзя". Есть простейший пример, который демонстрирует обратное:
#include <string>
#include <vector>
#include <thread>
#include <iostream>
using namespace std::string_literals;
using vector_of_string = std::vector<std::string>;
[[nodiscard]]
std::thread
launch_thread(const vector_of_string & v, int iterations) {
// Здесь компилятор запрещает модифицировать v.
return std::thread{ [&v, iterations] {
// Здесь компилятор запрещает модифицировать v.
std::size_t l{};
for(int i=0; i < iterations; ++i) {
for(const auto & s :v) l += s.size();
}
std::cout << "iterations: " << iterations << ", l=" << l << std::endl;
}};
}
int main() {
const vector_of_string immutable_data{ "Hello"s, "World"s };
// Здесь компилятор запрещает модифицировать v.
std::vector<std::thread> threads;
threads.push_back(launch_thread(immutable_data, 1'000));
threads.push_back(launch_thread(immutable_data, 2'000));
threads.push_back(launch_thread(immutable_data, 3'000));
for(auto & t : threads) t.join();
}Итого: тезис "нельзя" опровергнут примером (даже несколькими примерами по ходу обсуждения).
Дальнейшее упрямство поциента должно являться предметом интереса у специалистов-мозгоправов.
PS.
·>Это вы заврались. В приведённом тобой коде он не был изменяемым. Точнее, он там вынужденно изменяемый из-за наличия operator=.
Нет. Просто ваш "эквивалент" вовсе и не эквивалент: это и не value type, и не допускает модификацию значения in place.
Re[68]: Когда это наконец станет defined behavior?
Здравствуйте, ·, Вы писали:
s>> Мне надоело мусолить вашу тупость, поэтому вымараю то, что без мата комментировать уже невозможно.
·>Попробуй включить мозг и всё получится.
В вашем случае мозг придется включать психиатрам во время вашего лечения. Ибо откровенные проблемы с логическим мышлением прямо на поверхности:
·>Согласись, что до тебя наконец-то дошло, что с помощью const нельзя обеспечить иммутабельность и можно разойтись.
Есть заявление "нельзя". Есть простейший пример, который демонстрирует обратное:
Итого: тезис "нельзя" опровергнут примером (даже несколькими примерами по ходу обсуждения).
Дальнейшее упрямство поциента должно являться предметом интереса у специалистов-мозгоправов.
PS.
·>Это вы заврались. В приведённом тобой коде он не был изменяемым. Точнее, он там вынужденно изменяемый из-за наличия operator=.
Нет. Просто ваш "эквивалент" вовсе и не эквивалент: это и не value type, и не допускает модификацию значения in place.
s>> Мне надоело мусолить вашу тупость, поэтому вымараю то, что без мата комментировать уже невозможно.
·>Попробуй включить мозг и всё получится.
В вашем случае мозг придется включать психиатрам во время вашего лечения. Ибо откровенные проблемы с логическим мышлением прямо на поверхности:
·>Согласись, что до тебя наконец-то дошло, что с помощью const нельзя обеспечить иммутабельность и можно разойтись.
Есть заявление "нельзя". Есть простейший пример, который демонстрирует обратное:
#include <string>
#include <vector>
#include <thread>
#include <iostream>
using namespace std::string_literals;
using vector_of_string = std::vector<std::string>;
[[nodiscard]]
std::thread
launch_thread(const vector_of_string & v, int iterations) {
// Здесь компилятор запрещает модифицировать v.
return std::thread{ [&v, iterations] {
// Здесь компилятор запрещает модифицировать v.
std::size_t l{};
for(int i=0; i < iterations; ++i) {
for(const auto & s :v) l += s.size();
}
std::cout << "iterations: " << iterations << ", l=" << l << std::endl;
}};
}
int main() {
const vector_of_string immutable_data{ "Hello"s, "World"s };
// Здесь компилятор запрещает модифицировать immutable_data.
std::vector<std::thread> threads;
threads.push_back(launch_thread(immutable_data, 1'000));
threads.push_back(launch_thread(immutable_data, 2'000));
threads.push_back(launch_thread(immutable_data, 3'000));
for(auto & t : threads) t.join();
}Итого: тезис "нельзя" опровергнут примером (даже несколькими примерами по ходу обсуждения).
Дальнейшее упрямство поциента должно являться предметом интереса у специалистов-мозгоправов.
PS.
·>Это вы заврались. В приведённом тобой коде он не был изменяемым. Точнее, он там вынужденно изменяемый из-за наличия operator=.
Нет. Просто ваш "эквивалент" вовсе и не эквивалент: это и не value type, и не допускает модификацию значения in place.