Вопросы по теме '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 просмотров
schedule
22.02.2023
Доступ к статическому constexpr std::array без внеклассового определения
У меня есть класс, который определяет некоторые массивы.
Очки.hpp
class Points {
public:
static constexpr std::array< double, 1 > a1 = { {
+0.0 } };
static constexpr std::array< double, 2 > a2 = { {...
2365 просмотров
schedule
04.06.2023
Линейная регрессия с использованием scipy.ODR терпит неудачу (не полный ранг в решении)
поэтому пробовал линейную регрессию с scipy.odr. Однако это с треском провалилось. scipy.odr работал у меня раньше, и я не вижу ошибок в своем коде. Единственная причина, о которой я могу думать, заключается в том, что наклон может быть слишком...
1664 просмотров
schedule
12.12.2023
Может ли встроенная функция в заголовочном файле использовать константу, имеющую внутреннюю связь?
Рассмотрим следующий код:
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 просмотров
schedule
27.10.2022
В классе 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 просмотров
schedule
05.05.2022
функция 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 просмотров
schedule
25.07.2022
Почему 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 просмотров
schedule
09.04.2022
C++: определение класса в нескольких файлах
Согласно правилу одного определения (ODR) :
Во всей программе объект или не встроенная функция не может иметь более одного определения; если объект или функция используются, они должны иметь ровно одно определение.
Это мои файлы, которые...
142 просмотров
schedule
21.11.2023
Могут ли составные функции из разных единиц перевода мешать?
Я пытаюсь разобраться в последствиях того, что функция inline , и наткнулся на эту проблему. Рассмотрим эту небольшую программу ( демонстрация ):
/* ---------- main.cpp ---------- */
void other();
constexpr int get()
{
return 3;
}
int...
168 просмотров
schedule
09.07.2022
Нарушение 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 просмотров
schedule
06.05.2023
Неуказанные значения константных выражений и 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 просмотров
schedule
02.02.2024
Законно ли объявлять, но не определять функцию, которая не используется?
Допустим, у меня есть следующие файлы на 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 просмотров
schedule
16.02.2023