У меня есть заголовочный файл, содержащий следующее определение
const std::string error[] = {"a", "b"};
Теперь я включаю этот файл в две разные единицы перевода и компилирую исходные коды. Все работает, но почему? Ожидается, что это сломает one definition rule
.
Теперь еще интереснее, меняю тип
const char* error[] = {"a", "b"};
и вот она, ожидаемая ошибка
multiple definition of `error'
Это работает так же, как и для std::string для int
, char
, short
и других целочисленных типов. Что это?