Можно ли вызвать явные функции элемента объекта по указанию на выделенное хранилище?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли вызвать явные функции элемента объекта по указанию на выделенное хранилище?

Сообщение Anonymous »

Рассмотрим следующее: https://godbolt.org/z/o5r7jf4rk

Код: Выделить всё

#include 

struct Ignore {
constexpr Ignore(auto&& unknown_reference) {}
};

struct X {
constexpr bool f1() { return true; }
static constexpr bool f2() { return true; }
constexpr bool f3(this Ignore) { return true; }
};

consteval bool test(int function) {
std::allocator alloc;
X* p = alloc.allocate(1);
bool result;
switch (function) {
case 1: result = p->f1();
case 2: result = p->f2();
case 3: result = p->f3();
}
alloc.deallocate(p, 1);
return result;
}

#ifndef __clang__
static_assert(test(1));
#endif
static_assert(test(2));
static_assert(test(3));
< /code>
gcc и msvc принимают все три.:26:15: error: static assertion expression is not an integral constant expression
26 | static_assert(test(1));
|               ^~~~~~~
:18:25: note: member call on object outside its lifetime is not allowed in a constant expression
18 |     case 1: result = p->f1();
|                      ~~~^~~~
:26:15: note: in call to 'test(1)'
26 | static_assert(test(1));
|               ^~~~~~~
Однако это рассуждение также не применима к f3 ? Я предполагаю, что это рассуждение основано на [basic.life] p (8.2):

Программа имеет неопределенное поведение, если Glvalue используется для вызова нестатической функции объекта

и не F3 как совсем не-сете>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ed-storage
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проводник Windows не открывает папку по указанию JAR [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Проводник Windows не открывает папку по указанию JAR
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Явные несоответствия функций-членов объекта между разными компиляторами
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как отключить выделенное состояние для UIButton с помощью UIButtonConfiguration?
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как отключить выделенное состояние для UIButton с помощью UIButtonConfiguration? [дубликат]
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»