2012-12-10 14 views
17

Mi chiedo perché una cosa così naturale come static_if non sia riuscita a entrare in C++ 11? Alcune persone obiettano che usando l'ereditarietà o la specializzazione del modello potremmo ottenere risultati richiesti MA:Perché non c'è `static_if` in C++ 11

Perché non abbiamo un semplice static_if per situazioni semplici quando non si vuole ingrossare il codice sorgente con tutto questo?

+2

Quale compilatore stai usando che non rimuove il codice morto in 'if (false) {...} else {...}'? O vuoi dire che il codice morto non è valido in C++? – hvd

+0

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

+0

@hvd E la dichiarazione delle variabili? – Cartesius00

risposta

18

Suppongo che il comitato abbia poco tempo per discutere di questa funzionalità in modo che decidano di ritardarla dopo C++ 11. Comunque la proposta è qui: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3329.pdf

+0

Finalmente una risposta, grazie :) – Cartesius00

+0

@ Martin Hai visto [Statico se avessi un martello] (http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Static-If-I-Had-a-Hammer)? Oppure [Alexandrescu, Meyers, Sutter: On Static If, C++ 11 nel 2012, Modern Libraries e Metaprogramming] (http://channel9.msdn.com/Shows/Going+Deep/Alexandrescu- Meyers-Sutter-On- Static-Se-C11-in-2012-moderne librerie-e-Metaprogrammazione)? Se ricordo bene, la tua domanda ha una risposta in quest'ultimo e probabilmente farà parte di un futuro standard C++ (statico se come "concetti lite"). – Ali

+5

@Martin Suoni esasperati ma hai una risposta entro 6 minuti. –