Pytania oznaczone «c++11»

94
Dlaczego makra preprocesora są złe i jakie są alternatywy?

Zawsze o to pytałem, ale nigdy nie otrzymałem naprawdę dobrej odpowiedzi; Myślę, że prawie każdy programista jeszcze przed napisaniem pierwszego „Hello World” zetknął się z wyrażeniem „makro nie powinno być nigdy używane”, „makro jest złe” i tak dalej, moje pytanie brzmi: dlaczego? Czy po tylu...

93
Czy C ++ 11 ma właściwości w stylu C #?

W C # jest ładny cukier składniowy dla pól z getter i setter. Ponadto podoba mi się auto-implementowane właściwości, które pozwalają mi pisać public Foo foo { get; private set; } W C ++ muszę pisać private: Foo foo; public: Foo getFoo() { return foo; } Czy jest jakaś taka koncepcja w C...

93
Jawny zwracany typ Lambda

Kiedy próbuję skompilować ten kod (VS2010), pojawia się następujący błąd: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#");...

92
Constexpr a makra

Gdzie powinienem preferować używanie makr, a gdzie powinienem preferować constexpr ? Czy nie są w zasadzie takie same? #define MAX_HEIGHT 720 vs constexpr unsigned int max_height = 720;

90
Dlaczego lambda ma rozmiar 1 bajtu?

Pracuję z pamięcią niektórych lambd w C ++, ale trochę mnie dziwi ich rozmiar. Oto mój kod testowy: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl;...

90
Jak utworzyć warunkową definicję typu w C ++

Próbuję zrobić coś takiego: #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return 0; } ale...

89
Co to jest const void?

Opis std::is_voidstwierdza, że: Zapewnia stałą składową, która jest równa true, jeśli T jest typem void, const void, volatile void lub const volatile void. Więc co mogłoby być const void, lub volatile void? Ta odpowiedź stwierdza, że const voidzwracany typ byłby nieprawidłowy (jednak...