Показать сообщение отдельно

  #6  
Старый 05.09.2022, 10:42
Receiver
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами: 5332594

Репутация: 163


По умолчанию

Цитата:
Сообщение от kin4stat  

Говно одним словом.

Как минимум:
Вместо нормальных эксепшенов юзается самописное говно(спасибо хоть за то, что наследовано от
Код:
std::exception
).

А еще это самописное говно полная хуета. Привет от виртуального деструктора.

В чем проблема была заюзать
Код:
std::system_error?
Поехали дальше:

Вместо
Код:
std::string_view
принимается
Код:
const std::string&
Ну и вишенка на торте - уебанский интерфейс. Есть много вариантов сделать нормально, например как у мапы, или как у жсона, но был выбран самый уебский и систайловый.

В чем проблема сделать

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
std
::
visit
(
*
it
,
[
]
(
const
auto
&
value
)
{
using
T
=
std
::
remove_cv_ref_t

;
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
if
constexpr
(
std
::
is_same_v

)
{
// ...
}
else
{
// ...
}
}
)
;
}


Или

C++:





Код:
RegEdit r
;
try
{
auto
value
=
r
.
get

(
"key"
)
;
}
catch
(
const
std
::
runtime_error
&
ec
)
{
// wrong type ...
// ... or key not found
}


Или

C++:





Код:
RegEdit r
;
if
(
auto
it
=
r
.
find
(
)
;
it
!=
r
.
end
(
)
)
{
auto
value
=
it
.
get

(
)
;
}


Короче одним словом:
Хорошая идея на счёт
Код:
std::system_error
. А вот твою ***ню про итераторы я вообще не понял. Зачем получать итератор через
Код:
find
, чтобы потом в итоге всё равно использовать
Код:
get
, лол? Ты предлагаешь сделать перебор ключей через итераторы, но когда ты обращаешься к реестру - заранее знаешь в каком ключе находится твой каталог. И что начнётся если каталог существует в нескольких ключах одновременно. =/
 
Ответить с цитированием