Я изучил C ++ 17 способ работы с библиотекой только для заголовков, добавив ключевое слово inline
:
#include <iostream>
#include <string>
using namespace std;
struct C {
static const inline string N {"abc"};
};
int main() {
cout << C::N << endl;
return 0;
}
Запуск над фрагментом кода возвращает abc
, как и ожидалось.
Однако, если я попытался использовать стиль до C ++ 17, как показано ниже:
#include <iostream>
#include <string>
using namespace std;
struct C {
static std::string& N() {
static std::string s {"abc"};
return s;
}
};
int main() {
cout << C::N << endl;
return 0;
}
Я получил результат 1
, а не ожидаемый abc
. Мне интересно, почему и как это исправить?