Вызов новым в функции contexprC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вызов новым в функции contexpr

Сообщение Anonymous »

Я пытаюсь написать заводскую функцию, которая создает объект contexpr , который использует новый . Возможно ли это вообще? Deallocation уже сделку с решением 10 |

contexpr ~ buffer () {delete [] data; } < /p>
< /blockquote>
#include
struct Buffer {
int size;
int* data;

constexpr Buffer(int n) : size(n), data(new int[n])
{
for (int i = 0; i < n; ++i) data = i;
}

constexpr ~Buffer() { delete[] data; }

constexpr int get(int i) const { return data; }
static constexpr Buffer Create(int n)
{
Buffer buf(n);
// ...
return buf;

}
};

constexpr void test(int d)
{
Buffer b2(d);
}

int main() {
constexpr Buffer b = Buffer::Create(4);
constexpr Buffer b2(43); // also does not compile: error: ‘Buffer(43)’ is not a constant expression because it refers to a result of ‘operator new’
test(rand()); // This is Ok
}



Подробнее здесь: https://stackoverflow.com/questions/797 ... r-function
Ответить

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

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

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

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

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