2012-12-10 17 views
17

Zastanawiam się, dlaczego tak naturalnej rzeczy jak static_if nie udało się dostać do C++ 11? Niektórzy ludzie sprzeciwiają się, że przy użyciu dziedziczenia lub specjalizacji szablonów możemy osiągnąć żądane wyniki, ALE:Dlaczego nie ma "static_if" w C++ 11

Dlaczego nie mamy prostego static_if dla prostych sytuacji, gdy nie chcemy nadużywać kodu źródłowego z tym wszystkim?

+2

Który kompilator, którego używasz, nie usuwa martwego kodu w 'if (false) {...} else {...}'? Czy masz na myśli martwy kod nie jest prawidłowy C++? – hvd

+0

Istnieje 'enable_if': http://en.cppreference.com/w/cpp/types/enable_if – SomeWittyUsername

+0

@hvd Co z deklaracją zmiennych? – Cartesius00

Odpowiedz

18

Przypuszczam, że komisowi zabrakło czasu na omówienie tej funkcji, więc zdecydowali się ją opóźnić po C++ 11. W każdym razie propozycja jest tutaj: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3329.pdf

+0

Wreszcie odpowiedź, dziękuję :) – Cartesius00

+0

@Martin Widziałeś [Static If I Had a Hammer] (http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had-a-Hammer)? Lub [Alexandrescu, Meyers, Sutter: On Static If, C++ 11 w 2012, Modern Libraries i Metaprogramming] (http://channel9.msdn.com/Shows/Going+Deep/Alexandrescu-Meyers-Sutter-On- Statyczne-jeśli-C11-w-2012-Nowoczesne-Biblioteki-i-Metaprogramowanie)? Jeśli dobrze pamiętam, odpowiedź na twoje pytanie jest w tym drugim przypadku i prawdopodobnie będzie częścią przyszłego standardu C++ (statyczne, jeśli jako "koncepcje lite"). – Ali

+5

@Martin Brzmisz rozdrażniony, ale dostałeś odpowiedź w ciągu 6 minut. –

Powiązane problemy