Я полностью расстроен этими спецификаторами, потому что я понимаю, что они делают, когда они сами по себе, но мне трудно понять, когда они используются друг с другом. Например, содержится некоторый код в дикой природе -static, constexpr, const - что они означают, когда все используются вместе?
namespace{
static constexpr char const *Hello[] = { "HelloString", "WorldString"};
...
}
что это вообще делает?
- Зачем использовать статические, если вы уже находитесь в анонимном пространстве имен. И статические внутри классов имеют смысл (если вы не пишете C, которым не хватает пространства имен), без классов - почему?
- Зачем использовать constexpr - нет причин использовать его здесь. не будет простой
const
? - , а затем
const *Hello
не имеет смысла для меня. Что здесь постоянно? Строки или указатель*Hello
?
И, самое главное, он компилирует: /. Конечно, он будет компилироваться, потому что они действительные заявления, но что это значит?
constexpr предполагает, что он использует C++ 11. Знание этого статического смысла снова имеет смысл, поскольку оно сделает поток инициализации безопасным. (магическая статика). И constexpr делает его пригодным для использования в местах, где он не будет работать с константой. – Totonga
Я не думаю, что инициализация скаляра с помощью скопированных списков инициализации. –
Почему волшебная статика и вопрос безопасности потока для инициализации времени загрузки, хотя ...? Какое параллельное выполнение будет происходить там? – IanH