Können Sie sagen, wie kann ich Assertion, ist Funktion noexcept (ohne Argument übergeben)? Vielen Dank.Nein - außer ohne Argument übergeben
Antwort
Angenommen, Sie fragen:
Wie kann ich behaupten, dass eine Funktion ist
noexcept
ohne es zu nennen?
Die Antwort ist, dass Sie nicht können, weil der noexcept
Spezifizierer zwischen den Überladungen unterschiedlich sein könnte. Beispiel:
int a(int) noexcept;
int a(int, int);
// What would `noexcept(a)` mean?
#include
Zum Beispiel denke ich, dass diese falschen Wert zurück #include
Können Sie bitte posten, dass auf wandbox oder etwas ähnliches –
Angenommen, Sie (dank @VittorioRomeo für die Annahme) fragen:
Wie kann ich behaupten, dass eine Funktion ohne nannte es noexcept ist?
Sie können den Operator noexcept
verwenden, da seine Operanden nicht bewertete Operanden sind.
Mit anderen Worten: Sie können dies tun:
void f(int) noexcept { }
void f(int, int) { }
int main() {
static_assert(noexcept(f(0)), "!");
static_assert(not noexcept(f(0, 0)), "!");
}
f
nicht in jedem Fall aufgerufen wird, das heißt die (lassen Sie mich sagen) Natur eines unevaluierten Operanden.
Der interessanteste Teil ist, dass Sie es mit std::declval
kombinieren können, wenn Sie keine Variable haben, um als ein Argument verwendet zu werden, und Sie nicht wissen, wie man es konstruiert.
Als Beispiel:
#include<utility>
struct S { S(int) {} };
void f(S) noexcept { }
int main() {
static_assert(noexcept(f(std::declval<S>())), "!");
}
Bitte beachte, dass ich muss S
nichts passieren zu bauen, auch wenn es keinen Default-Konstruktor hat.
Dies ist in der Regel genug, um die Anforderung von zu umgehen keine Argumente übergeben.
- 1. Prolog Antworten Argument = Argument, statt Antwort Nein
- 2. os.execv ohne Argumente Argument
- 3. Coffee tun, übergeben Argument
- 4. Pythonic Argument übergeben
- 5. Argument in Powershell übergeben
- 6. $ (this) als Argument übergeben?
- 7. sichere Veröffentlichung, Argument übergeben
- 8. Warum akzeptiert System ohne Warnung long int als Argument übergeben?
- 9. Akka Streams: Nein argument GraphDSL.create() vs GraphDSL.create (Senke)
- 10. Schienen: Ein Argument an ein Anliegen übergeben
- 11. Funktion als Klasse Argument übergeben
- 12. Ein gets.chomp als Argument übergeben
- 13. Ein Array als Argument übergeben
- 14. Javascript übergeben Argument im Objekt
- 15. Benutzerdefinierte Validatoren - ein Argument übergeben
- 16. C# übergeben Funktion als Argument
- 17. Boolean Argument nicht korrekt übergeben
- 18. Python übergeben Argument mit Zitat
- 19. Python-Argument an Shell übergeben
- 20. Eine Methode als Argument übergeben
- 21. Signal ohne Standardaktion außer SIGINFO
- 22. Schienen Routen außer ohne Symbol
- 23. Ändern Res ohne muting Argument
- 24. Ändern Argument ohne Rückkehr
- 25. TensorFlow: XLA nicht mit "Invalid argument: Nein _XlaCompile" läuft Fehler
- 26. Übergeben temporäre Struktur als Vorlage Argument
- 27. Übergeben von Code als Argument in Funktion
- 28. Java generische Klasse Instanziierung ohne Typen Argument
- 29. Zu Objekt übergeben, das als Argument in ES5 übergeben wird
- 30. Swift-Funktion ohne Argument Etiketten
Im Allgemeinen können Sie keine Funktion ohne Angabe von Argumenten angeben - es kann mehrere Überladungen mit demselben Namen, einige "noexcept" und andere nicht geben. –