Вопросы по теме 'one-definition-rule'
Используется виртуальная функция-член, если она не чистая?
C++03 3.2.2 ... Используется объект или неперегруженная функция, если ее имя появляется в потенциально оцениваемом выражении. Виртуальная функция-член используется, если она не чистая ...
А затем в 3.2.3 мы имеем: Каждая программа должна...
415 просмотров
schedule
12.02.2022
Одно правило определения: могут ли соответствующие объекты иметь разные имена?
Я прочитал и перечитал соответствующие статьи об 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 просмотров
schedule
09.03.2024
Гарантируется ли наличие только одной копии встроенной функции без встроенной функции?
Если я объявляю большую встроенную функцию, а компилятор в любом случае решает скомпилировать ее как автономную функцию, гарантированно ли в программе будет только одна копия этой встроенной встроенной функции, или же компилятор может в конечном итоге...
139 просмотров
schedule
21.05.2023
О ODR-нарушениях и переменных шаблона
Я знаю, что шаблонные функции не страдают от множественных определений при связывании, как функции-члены, определенные внутри класса, которые по умолчанию являются встроенными. Кроме того, объекты constexpr имеют внутреннюю связь, но переменные...
222 просмотров
schedule
29.01.2023
Могу ли я предоставить одно и то же определение функции в разных TU?
Я читал о внутренней и внешней связи и обнаружил, что по умолчанию функция имеет внешнюю связь.
Поэтому я подумал, можно ли объявить функцию в файле заголовков и предоставить несколько ее определений в разных единицах перевода.
До сих пор я...
66 просмотров
schedule
17.03.2023
Требуется ли реализация для диагностики ODR-нарушений повторяющихся определений одной и той же явной специализации в одном и том же TU?
Рассмотрим шаблонную сущность, скажем (A) шаблон функции и (B) перечисление членов шаблона класса.
// (A)
template<auto>
int f();
// (B)
template <auto>
struct T { enum class E; };
Требуется ли реализация для диагностики нарушений...
104 просмотров
schedule
26.05.2024