Wie kann ich einen Move-Konstruktor eines Wrappertyps XT noexcept abhängig von is_nothrow_move_constructibleT deklarieren?

8

Angenommen, ich habe einen Wrappertyp

%Vor%

und ich kann nicht einfach X(X&&) = default , weil ich dort nicht-triviale Sachen machen muss.

Ich möchte jedoch, dass es noexcept ist, aber nur, wenn T(T&&) noexcept ist. Dies kann mit ::std::is_nothrow_move_constructible getestet werden.

Ich bin nicht in der Lage, eine Version des Konstruktors oder die andere abhängig von constexpr bedingt zu aktivieren. Ich nehme an, es könnte eine Möglichkeit geben, SFINAE zu verwenden, aber ich weiß nicht, t Sehen Sie, wie man es auf ctors anwendet.

    
bitmask 24.11.2016, 12:35
quelle

1 Antwort

9

Der noexcept -Spezifizierer akzeptiert jeden booleschen konstanten Ausdruck, so dass Sie nur Ihre Typeigenschaft dort direkt einchecken können:

%Vor%     
TartanLlama 24.11.2016, 12:39
quelle