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

Как реализовать одно правило определения
Этот пост ссылается на правило единого определения. Википедия плохо объясняет, как это реализовать Где я могу найти хорошие источники о рекомендациях, которым следует следовать в C ++ .NET?
374 просмотров
schedule 09.03.2023

Необходимость опережающего объявления шаблонных функций
Недавно я создал этот пример кода, чтобы проиллюстрировать использование функции вариативного шаблона C++11. template <typename Head, typename... Tail> void foo (Head, Tail...); template <typename... Tail> void foo (int, Tail...); void...
12826 просмотров

Доступ к статическому constexpr std::array без внеклассового определения
У меня есть класс, который определяет некоторые массивы. Очки.hpp class Points { public: static constexpr std::array< double, 1 > a1 = { { +0.0 } }; static constexpr std::array< double, 2 > a2 = { {...
2365 просмотров

Линейная регрессия с использованием scipy.ODR терпит неудачу (не полный ранг в решении)
поэтому пробовал линейную регрессию с scipy.odr. Однако это с треском провалилось. scipy.odr работал у меня раньше, и я не вижу ошибок в своем коде. Единственная причина, о которой я могу думать, заключается в том, что наклон может быть слишком...
1664 просмотров

Может ли встроенная функция в заголовочном файле использовать константу, имеющую внутреннюю связь?
Рассмотрим следующий код: const int a = 0; const std::string b = "hi"; inline void f_a1() { std::cout << a; } inline void f_b1() { std::cout << b; } inline void f_a2() { std::cout << &a; } inline void f_b2()...
228 просмотров

В классе static const ODR
Меня немного смущает static инициализация в классе члена const . Например, в приведенном ниже коде: #include <iostream> struct Foo { const static int n = 42; }; // const int Foo::n; // No ODR void f(const int& param) {...
1309 просмотров
schedule 08.04.2022

Встроенная функция С++ и внешняя функция с тем же именем дают неожиданный результат
Следующий код не нарушает одно правило определения, но дает неожиданный результат: Test.hpp class Test { public: int test(); }; Test1.cpp #include "Test.hpp" int Test::test() { return 1; } int test1() // expected...
177 просмотров
schedule 02.09.2023

Scipy.Odr регрессия с несколькими переменными
Я хотел бы выполнить многомерный ODR с scipy.odr . Я читал документацию API, там написано, что многомерность возможна, но я не могу заставить ее работать. Я не могу найти рабочий пример в Интернете, а API действительно сырой и не дает подсказок,...
1364 просмотров

функция constexpr с внешней статической таблицей
Есть похожие вопросы, но я не нашел прямого ответа на этот вопрос. Я хочу реализовать функцию constexpr следующим образом: constexpr int Foo(int x) { static const int table[128] = { 3, 1, 4, 1, 5, ..., 99 }; return (0 <= x && x...
309 просмотров
schedule 11.08.2022

Понимание того, что вызывает эту ошибку множественного определения
У меня есть базовый класс с чисто виртуальным методом, реализованным двумя классами: // base_class.hpp class base_class { public: virtual std::string hello() = 0; }; // base_implementer_1.hpp class base_implementer1 : base_class { public:...
829 просмотров
schedule 17.04.2022

Какова цель фразы «if x is an object» в [basic.def.odr] / 3?
[basic.def.odr] / 3 : Переменная x, имя которой появляется как потенциально оцениваемое выражение ex, используется ex в odr, если только применение преобразования lvalue-to-rvalue (4.1) к x не дает постоянного выражения (5.20), которое не...
120 просмотров

Почему tuple_size является чертой, а не членом
Почему tuple_size является бесплатным трейтом, а не переменными-членами/определениями типов внутри класса? Последний имеет гораздо меньший риск нарушения ODR. Есть ли конкретный вариант использования, в котором наличие признака tuple_size...
667 просмотров
schedule 05.07.2022

Предотвращение нарушений ODR при использовании отладочных утверждений
У меня есть библиотека только для заголовков, в которой включены некоторые дополнительные отказоустойчивые утверждения во время выполнения при компиляции в режиме отладки. Упрощенная версия заголовка выглядит так: #include <exception>...
225 просмотров
schedule 25.07.2023

Верен ли стандартный пример ODR?
Прежде чем ответить, обратите внимание, что другой вопрос тесно связан. Стандарт C++17 (черновик здесь ), разд. 6.2(2.8), дает следующий пример: struct S { static const int x = 0; }; const int &f(const int &r); int n = b ? (1, S::x)...
58 просмотров

C++: определение класса в нескольких файлах
Согласно правилу одного определения (ODR) : Во всей программе объект или не встроенная функция не может иметь более одного определения; если объект или функция используются, они должны иметь ровно одно определение. Это мои файлы, которые...
142 просмотров
schedule 21.11.2023

Могут ли составные функции из разных единиц перевода мешать?
Я пытаюсь разобраться в последствиях того, что функция inline , и наткнулся на эту проблему. Рассмотрим эту небольшую программу ( демонстрация ): /* ---------- main.cpp ---------- */ void other(); constexpr int get() { return 3; } int...
168 просмотров

Нарушение ODR из-за анонимного пространства имен в заголовке
Из чтения стандарта я не смог понять, нарушает ли следующий код ODR: // a.h #ifndef A_HEADER_FILE #define A_HEADER_FILE namespace { int v; } inline int get_v() { return v; } #endif // A_HEADER_FILE // a.cpp #include "a.h" void f() { int i =...
116 просмотров

Неуказанные значения константных выражений и ODR
Рассмотрим эту программу в трех файлах: // a.h #include<iostream> constexpr auto f() { int i = 0; auto l1 = [](int& j) { return ++j; }; auto l2 = [](int& j) { return j*=2; }; return l1(i) + l2(i); }...
150 просмотров

Законно ли объявлять, но не определять функцию, которая не используется?
Допустим, у меня есть следующие файлы на C++: // bar.hpp int foo(); int bar(); // bar.cpp #include "bar.hpp" int bar() { return 3; } // main.cpp #include "bar.hpp" int main() { return bar(); } Обратите внимание, что foo()...
112 просмотров