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)); | ^~~~~~~ [/code]
Однако это рассуждение также не применима к f3 ? Я предполагаю, что это рассуждение основано на [basic.life] p (8.2):
Программа имеет неопределенное поведение, если Glvalue используется для вызова нестатической функции объекта
У меня есть приложение Spring Boot с интерфейсом HTML. Приложение имеет API, который при вызове должен открывать папку в файловой системе (только для Windows — поддержка Linux и MacOS не требуется) по заданному пути. В качестве аргумента...
У меня есть приложение Spring Boot с интерфейсом HTML. Приложение имеет API, который при вызове должен открывать папку в файловой системе (только для Windows — поддержка Linux и MacOS не требуется) по заданному пути. В качестве аргумента...
Я написал следующую программу на C++23. Здесь я перегрузил функции-члены. Но во всех случаях разные компиляторы дают разные результаты, как показано ниже в комментарии. Как вы можете видеть, ниже у меня есть три случая. Демо.
struct C {
void j(this...
Здравствуйте, вот как определяется и инициализируется мой UIButton:
lazy var addButton: UIButton = {
let button = UIButton(radius: 32, title: + , font: .poppinsRegular.withSize(40), backgroundColor: .purple)
button.menu = UIMenu(title: )...
Здравствуйте, вот как определяется и инициализируется мой UIButton:
lazy var addButton: UIButton = {
let button = UIButton(radius: 32, title: + , font: .poppinsRegular.withSize(40), backgroundColor: .purple)
button.menu = UIMenu(title: )...