Я люблю C++ [КУ]
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 04.10.24 19:11
Оценка: :))) :))) :))) :))) :))
Здравствуйте!

  хм, подчеркнуло, наверное ошибка какая-то

  Может, мышкой навестись, хинт покажет?
Маньяк Робокряк колесит по городу
Re: Я люблю C++ [КУ]
От: Нomunculus Россия  
Дата: 05.10.24 05:58
Оценка: +2
Здравствуйте, Marty, Вы писали:

Описания эрроров и ворнингов не лучше, если с шаблонами что-то. Нет блин сказать по-человечески «тут у класса надо оператор ==. Нееее. Вывалит все исходники
Re: Я люблю C++ [КУ]
От: cppguard  
Дата: 05.10.24 08:09
Оценка: +1
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>
  хм, подчеркнуло, наверное ошибка какая-то
M>Image: 2024_09_05_22_03_42_image.png

M>
  Может, мышкой навестись, хинт покажет?
M>Image: 2024_09_05_22_06_35_image.png


Ну наброс же чистой воды =) Там вся суть ошибки в первых трёх строчках написана, а дальше идёт расшифровка. Чем это принципиально отличается от stack trace в Java или Python? Разве что тем, что тут всё происходит во время компиляции.
Re[2]: Я люблю C++ [КУ]
От: Alekzander Россия  
Дата: 05.10.24 08:26
Оценка: +1
Здравствуйте, cppguard, Вы писали:

C>Ну наброс же чистой воды =) Там вся суть ошибки в первых трёх строчках написана, а дальше идёт расшифровка. Чем это принципиально отличается от stack trace в Java или Python? Разве что тем, что тут всё происходит во время компиляции.


Я тоже "люблю" C++, но в данном случае всё просто и понятно.
В Beatles играло три с половиной человека — Леннон, Харрисон, Старр и пол-МакКартни.
Re: Я люблю C++ [КУ]
От: DiPaolo Россия  
Дата: 05.10.24 09:17
Оценка:
Во-во! А в остальных языках все в свое время ждали этих ваших генериков (тьфу ты, темплейтов), не зная, что их ждет
Патриот здравого смысла
Re: Я люблю C++ [КУ]
От: Великий Реверс google
Дата: 05.10.24 13:36
Оценка: +1
кончай лохматить бабушку
поставь уже наконец то 2022 студию
переключись на современный с++20
Re[2]: Я люблю C++ [КУ]
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.10.24 16:30
Оценка: +3
Здравствуйте, Великий Реверс, Вы писали:

ВР>кончай лохматить бабушку

ВР>поставь уже наконец то 2022 студию
ВР>переключись на современный с++20

Какой ты смешной
Маньяк Робокряк колесит по городу
Re[2]: Я люблю C++ [КУ]
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.10.24 17:05
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Ну наброс же чистой воды =) Там вся суть ошибки в первых трёх строчках написана, а дальше идёт расшифровка. Чем это принципиально отличается от stack trace в Java или Python? Разве что тем, что тут всё происходит во время компиляции.


Спасибо, капитан, я и без тебя знал, что что-то пошло не так при вызове makeString

У меня в проекте есть иерархия шаблонных классов (с десяток параметров у шаблона), и зависимые шаблонные классы, которые используют юзинги/тайпдефы из основной иерархии, и все параметры шаблона, кроме первого, задаются по умолчанию.

Потом мне понадобилось встрваить некоторый юзер контекст класс как параметр шаблона, при этом он важен, и он стал вторым параметром. Я всё вроде отрефакторил, но видимо где-то забыл, и в итоге InputIteratorType стал не пойми чем.

Было типа такого:
template<
    class CharT,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>

> class basic_string
{
    using value_type     = CharT;
    using traits_type    = Traits;
    using allocator_type = Allocator;

    // ...
}


На basic_string::using'и завязаны производные и зависимые классы.

Отрефакторил в такое:
template<
    class CharT,
    class UserContext = void*,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>

> class basic_string;


Ну и где-то что-то недорефакторил, где-то сдвиг произошел, где-то нет, в итоге в конечном коде InputIteratorType стал какой-то хренью, и ожидаемо не собирается.

От компилятора хотелось внятного сообщения, где что не так, а не хтоническая портянка, не влезающая на экран ни по горизонтали, ни по вертикали.

ЗЫ От адептов голенькой сишечки хотелось бы кстати узнать, как вы делаете тот же basic_string с параметризацией типом символа, его трайтсами (ок, можно без них), и аллокатором?
Маньяк Робокряк колесит по городу
Re[3]: Я люблю C++ [КУ]
От: cppguard  
Дата: 08.10.24 07:17
Оценка:
Здравствуйте, Marty, Вы писали:

M>Спасибо, капитан, я и без тебя знал, что что-то пошло не так при вызове makeString


Там не просто "что-то не так", а сказано, что нет перегрузки для переданных типов.

M>У меня в проекте есть иерархия шаблонных классов (с десяток параметров у шаблона), и зависимые шаблонные классы, которые используют юзинги/тайпдефы из основной иерархии, и все параметры шаблона, кроме первого, задаются по умолчанию.


M>Потом мне понадобилось встрваить некоторый юзер контекст класс как параметр шаблона, при этом он важен, и он стал вторым параметром. Я всё вроде отрефакторил, но видимо где-то забыл, и в итоге InputIteratorType стал не пойми чем.


Видимо, в этом причина, а не в плохом формате вывода ошибок? Если уж так любишь С++, то почему не перейти на концепты?

M>От компилятора хотелось внятного сообщения, где что не так, а не хтоническая портянка, не влезающая на экран ни по горизонтали, ни по вертикали.


То есть ты ожидаешь, что компилятор должен догадаться, что ты хотел? На ЛОРе в этом случае шутят, что libastral не подключён.

M>ЗЫ От адептов голенькой сишечки хотелось бы кстати узнать, как вы делаете тот же basic_string с параметризацией типом символа, его трайтсами (ок, можно без них), и аллокатором?


Да никак, давно уже везде или ANSI, или UTF-8. Вот эти вот все "а давайте мы всё сделаем параметром, потому что вдруг нашу библиотеку придётся портировать на марсианский компьютер, где троичная логика и 21-бит на символ" не работают. Ирония заключается в том, что голая сишечка отлично портируется на утюги и фены Дайсон, а С++ может не собраться, просто потому что версия компилятора не понравилась.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.