класс exception (не std::), который умеет конструироваться от:
                  
                  
                  > exception(const char*) 
                  
                  
                  > exception(const_char*, size_t) 
                  
                  
                  Но он должен иметь другую семантику при создании от строки, которая гарантированно переживет объект исключения
                  
                  
                  Для этого хотелось бы иметь конструкторы
                  
                  
                  > exception(const char(&)[N]) 
                  
                  
                  > exception(const char*, persistent_message_tag) 
                  
                  
                  >  exception(const char*, size_t, persistent_message_tag) 
                  
                  
                  Проблема: разрулить перегрузки от указателя и массива, сделав при этом интерфейс удобным для пользователя. Сейчас я решил вопрос слегка костыльно - дополнительным impermanent_message_tag в первую.
                  
                  
                  Как правильнее?
                  
                  
                
Правильнее писать на Rust
Жаль, тут нет Царя
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Вот когда напишете рантайм Rust'a для виндового kernel space - милости прошу, а сейчас это оффтопик)
Как там ваш раст, научился в статическую интроспекцию? А в CTFE?
Сейчас выясниться, что и винда не нужна
Без лирики в сообщениях
Мне хочется делать теги первыми всегда, чтобы форвардить... если что Но в принципе хочется, чтобы семантически разные параметры были разнотипными.
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Насчет расположения тегов - спасибо за мысль Разнотипные параметры сделать не удастся: конструктор от const char* требуют Стандарт и здравый смысл, а таковой для const char(&)[N] позволит бросить исключение без аллокаций (и даже без обращения к зарезервированной памяти)
Я скорее предпочел бы там конструктор от string_view, но это личное
Бери fixed_string...
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Внутри-то все равно будет храниться указатель (либо на строку плюс счётчик ссылок, либо на литерал напрямую)
Ну это сложно... Может тебе подумать о создающих объект функциях? Или даже сразу кидаться исключением из функции
Учти что от массива с размером конструктор должен быть шаблонным. Это тоже добавит сложности
https://gcc.godbolt.org/z/o7avdx7Mv
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Концепты мне нельзя, но идею понял, благодарю)
А концептов здесь нет
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  std::same_as
Действительно
Я использую наследника string_view с названием literal_view который только из массива конструируется ну или через оператор ""__lv. Или явным преобразованием to_literal_view. Перегрузки соответственно две, string_view/literal_view.
![Dmitriy-[Отпуск]](https://image.telq.org/user_avatar_343424865_1474998564264454083_mini.jpeg) Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Dmitriy
                          [Отпуск]
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  На всякий случай: идентификаторы с более чем одним андерскором подряд зарезервированы для имплементации в любой области видимости.
Да, ""_lv, конечно, описка просто.
Обсуждают сегодня