Разумеется, речь идет не о чистых C-style строковых константах.
Хочу объявлять строковые константы с дополнительными служебными данными. Например, в минус первой позиции автоматически компилятором размещается длина строки, в минус второй и так далее могу я сам что-то размещать. И всё это непрерывным блоком, без буста (если он это позволяет), на компиляторе MSVC2012.
У меня есть свой способ, но он с недостатками. Надеюсь, есть способ получше.
Здравствуйте, 3m-soft, Вы писали:
3S>Разумеется, речь идет не о чистых C-style строковых константах. 3S>Хочу объявлять строковые константы с дополнительными служебными данными. Например, в минус первой позиции автоматически компилятором размещается длина строки, в минус второй и так далее могу я сам что-то размещать. И всё это непрерывным блоком, без буста (если он это позволяет), на компиляторе MSVC2012. 3S>У меня есть свой способ, но он с недостатками. Надеюсь, есть способ получше.
Здравствуйте, Zhendos, Вы писали:
Z>Можно посмотреть как это сделали в qt5: Z>http://woboq.com/blog/qstringliteral.html
Z>если кратко то там для этого заюзали лямбда функции
Спасибо за наводку. Мой метод такой же, но, как я уже сказал, он имеет недостатки:
1) Такая лямбда-функция хорошо инлайнится в релизной версии, а в отладочной версии получаем вызов функции. Хочу без вызова функции везде.
2) Этот метод нельзя использовать в списке инициализации структуры или массива. Лично у меня MSVC2012 крашится на этом.
Здравствуйте, 3m-soft, Вы писали:
3S>Разумеется, речь идет не о чистых C-style строковых константах. 3S>Хочу объявлять строковые константы с дополнительными служебными данными. Например, в минус первой позиции автоматически компилятором размещается длина строки, в минус второй и так далее могу я сам что-то размещать. И всё это непрерывным блоком, без буста (если он это позволяет), на компиляторе MSVC2012. 3S>У меня есть свой способ, но он с недостатками. Надеюсь, есть способ получше.
Строковые литералы (не уверен что они есть в мсвц) или свой препроцессор
3S>Разумеется, речь идет не о чистых C-style строковых константах. 3S>Хочу объявлять строковые константы с дополнительными служебными данными. Например, в минус первой позиции автоматически компилятором размещается длина строки, в минус второй и так далее могу я сам что-то размещать. И всё это непрерывным блоком, без буста (если он это позволяет), на компиляторе MSVC2012. 3S>У меня есть свой способ, но он с недостатками. Надеюсь, есть способ получше.
вместо arg можно заюзать BOOST_PP и задавать его например так (4)((3)(2) и немного переписать макрос что бы тот раскрывал этот сиквенс в декларации, по сути BOOST_PP_SEQ_ENUM()