Anonymní profil Stamp – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Stamp – Programujte.comAnonymní profil Stamp – Programujte.com

 

Příspěvky odeslané z IP adresy 78.99.95.–

Stamp
C / C++ › std::launder , alignas
10. 3. 2019   #383262

A v tomto pripade aky je teda rozdiel medzi tymito dvoma riadkami:
 

auto ptr = std::launder(reinterpret_cast<Tracer*>(buffer));
auto ptr = reinterpret_cast<Tracer*>(buffer);

Resp. kedy je vhodne pouzit std::launder? :-)

Stamp
C / C++ › std::launder , alignas
10. 3. 2019   #383252

Ahoj, z cppreference som trosku upravil kod :
 

#include "pch.h"
#include <memory>
#include <new>
#include <iostream>
#include <iomanip>

struct Tracer {
	int value;
	~Tracer() { std::cout << value << " destructed\n"; }
};

int main()
{

	alignas(Tracer) unsigned char buffer[sizeof(Tracer) * 8];

	for (int i = 0; i < 8; ++i) {
		new(buffer + sizeof(Tracer) * i) Tracer{ i }; //manually construct objects
		std::cout << std::setw(9) << (long long) &buffer + sizeof(Tracer) * i << '\n';
	}
	//auto ptr = std::launder(reinterpret_cast<Tracer*>(buffer));
	auto ptr = reinterpret_cast<Tracer*>(buffer);
	std::destroy(ptr, ptr + 8);
}

A zaujima ma, k comu tam potrebujeme:  
->alignas (Tracer) .. viem, ze sa jedna o zarovnanie v pamati, ale tam to asi konci...

-> std::launder , jediny priklad co som k tomu nasiel pokial sme na adrese stareho objektu (ktory mal nejaky const atribut) vytvorili novy a chceli sme ho menit, ale nerozumiem preco ho pouziva aj teraz. 

Dakujem :) 

Stamp
C / C++ › friend operator+
7. 3. 2019   #383232

Zdravim, bude takyto kod fungovat bez problemov? 

class vec {
	vec(int x, int y) : m_x(x), m_y(y) {}
	friend vec& operator+(vec1, vec2) {
		return { vec1.m_x + vec2.m_x, vec1.m_y + vec2.m_y }
	}
    private:
	int m_x;
	int m_y;
};

Nevraciam referenciu na temporary? 

Stamp
C / C++ › visual studio intellisense
2. 3. 2019   #383197

Ahoj, mohol by si dat link na konkretne video? :-) 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý