Вопросы по теме 'one-definition-rule'

Используется виртуальная функция-член, если она не чистая?
C++03 3.2.2 ... Используется объект или неперегруженная функция, если ее имя появляется в потенциально оцениваемом выражении. Виртуальная функция-член используется, если она не чистая ... А затем в 3.2.3 мы имеем: Каждая программа должна...
415 просмотров

Одно правило определения: могут ли соответствующие объекты иметь разные имена?
Я прочитал и перечитал соответствующие статьи об ODR в стандарте C ++, но этот вопрос все еще остается для меня открытым. Стандарт говорит, что определение встроенной функции должно появляться в каждой единице перевода, в которой она используется, и...
260 просмотров
schedule 06.04.2022

Что означает переопределение?
Верно ли, что переопределение означает, что мы пытаемся определить сущность, которая уже определена. Этот вопрос появляется из следующего примера кода: int a=5; int main() { int a=3;//redefinition? I think no, because `int a` denote an...
4530 просмотров
schedule 22.09.2022

std::make_unique, анонимное пространство имен и ODR
Пожалуйста, рассмотрите следующий тестовый пример (уменьшенный из исходного кода LLVM): //% cat foo1.cpp #include <memory> namespace { class A { int i; }; } class G { std::unique_ptr<A> foo() const; }; std::unique_ptr<A>...
515 просмотров
schedule 17.06.2023

Ошибка компоновщика со статической константой, которая, похоже, не используется odr
Определение в стандарте для odr-used довольно сбивает с толку, если вдаваться в подробности (по крайней мере, для меня это так). Обычно я полагаюсь на неформальное определение «Если ссылка берется», кроме , когда доступно преобразование...
142 просмотров
schedule 04.05.2022

структура с тем же именем, но с другим членом в С++
Согласно книге Язык программирования C++ (Бьярн Страуструп), в разделе 15.2.3 (Единое правило определения), страница № 425, я пишу программу, как показано ниже: файл1.cpp struct S2 { int a; char b; }; файл2.cpp struct S2 { int a;...
1415 просмотров

Гарантируется ли наличие только одной копии встроенной функции без встроенной функции?
Если я объявляю большую встроенную функцию, а компилятор в любом случае решает скомпилировать ее как автономную функцию, гарантированно ли в программе будет только одна копия этой встроенной встроенной функции, или же компилятор может в конечном итоге...
139 просмотров
schedule 21.05.2023

О ODR-нарушениях и переменных шаблона
Я знаю, что шаблонные функции не страдают от множественных определений при связывании, как функции-члены, определенные внутри класса, которые по умолчанию являются встроенными. Кроме того, объекты constexpr имеют внутреннюю связь, но переменные...
222 просмотров

Могу ли я предоставить одно и то же определение функции в разных TU?
Я читал о внутренней и внешней связи и обнаружил, что по умолчанию функция имеет внешнюю связь. Поэтому я подумал, можно ли объявить функцию в файле заголовков и предоставить несколько ее определений в разных единицах перевода. До сих пор я...
66 просмотров

Требуется ли реализация для диагностики ODR-нарушений повторяющихся определений одной и той же явной специализации в одном и том же TU?
Рассмотрим шаблонную сущность, скажем (A) шаблон функции и (B) перечисление членов шаблона класса. // (A) template<auto> int f(); // (B) template <auto> struct T { enum class E; }; Требуется ли реализация для диагностики нарушений...
104 просмотров