А вот эта проблема с определением статической переменной, она существует

даже при одной такой переменной?

russian web-design

21 ответов

Конечно.

d7d1cd- Автор вопроса
Alexander "Ternvein" Isaev
Конечно.

Тогда как эта проблема обходится в реализации std::basic_string для npos?

Она существует тогда, когда в программе существует более одного определения любого символа.

d7d1cd- Автор вопроса
Alexander "Ternvein" Isaev
Определением в cpp, или inline.

До С++17 это решается определением в CPP?

d7d1cd
Тогда как эта проблема обходится в реализации std:...

по всей видимости тем, что оно константа

d7d1cd
До С++17 это решается определением в CPP?

Стандарт для inline не помню, но да.

d7d1cd- Автор вопроса
Vlad
по всей видимости тем, что оно константа

Так у меня оба поля тоже константы

d7d1cd
Так у меня оба поля тоже константы

There can be more than one definition of <...> static data member of a class template. <...> Given such an entity named D defined in more than one translation unit, then — each definition of D shall consist of the same sequence of tokens; and <...>

Vlad
There can be more than one definition of <...> sta...

Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!

Перенеси назад в шаблон обе константы, будет тебе аналог inline.

d7d1cd- Автор вопроса
Alexander "Ternvein" Isaev
Перенеси назад в шаблон обе константы, будет тебе ...

Назад в шаблон? В какой, если я разговор начал с того, что у меня поля в обычном классе?

Можно, но от ODR violation не спасёт.

d7d1cd- Автор вопроса
Alexander "Ternvein" Isaev
Можно, но от ODR violation не спасёт.

Почему? Ведь объявляют же константы в хедерах.

d7d1cd
Почему? Ведь объявляют же константы в хедерах.

Объявлять никто не мешает. А вот определять — другое дело.

d7d1cd- Автор вопроса

Похожие вопросы