Встроенная переменная C ++ 17 против встроенной статической переменной - PullRequest
0 голосов
/ 24 мая 2018

Меня немного смущает inline variable, представленный C ++ 17.Каковы различия между inline variable и inline static variable?Также это будет зависеть от объема?

inline T var_no_scope;
inline static T static_var_no_scope;

namespace scope {
  inline T var_scope;
  inline static T static_var_scope;
}

Любое объяснение будет оценено!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

inline применимо только к переменным с статической продолжительностью хранения .

Все переменные в вашем примере имеют область имен , давая им статическую продолжительность хранения.Их объявление static не имеет никакого эффекта, если они inline.

Переменная внутри class, struct или union имеет статическую продолжительность хранения, только если она объявлена ​​static.Эти переменные должны быть static, если они должны быть inline.

0 голосов
/ 24 мая 2018

Для меня это становится интереснее, когда речь идет о членах.В C++17 вы можете объявить ваши статические элементы данных как inline.Преимущество заключается в том, что вам не нужно выделять для них место в source file.Например:

class A
{
// Omitted for brevity
static inline int b = 0;
};

Так что int A::b; можно удалить из исходного файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...