Reinitialize Object In-Place

#include <iostream>
#include <cstdint>
#include <new>

using namespace std;

// Mode struct representing a firmware mode/level
struct Mode {
    int level;
};

int main() {
    int firstLevel, secondLevel;
    cin >> firstLevel >> secondLevel;
    alignas(Mode) uint8_t buffer[sizeof(Mode)];

    Mode* modePtr = new (buffer) Mode{firstLevel};
    modePtr->~Mode();

    modePtr = new (buffer) Mode{secondLevel};

    cout << modePtr->level;
    modePtr->~Mode();

    return 0;
}

Solving Approach

 

 

 

 

 

 

Upvote
Downvote
Loading...

Input

3 9

Expected Output

9