Il modificatore noexcept
può essere applicato a un'espressione lambda? Se é cosi, come?Utilizzo di noexcept come modificatore lambda o vincolo parametro
È possibile impostare noexcept
un vincolo su un argomento di funzione? Ad esempio, qualcosa di simile nel seguente codice, in cui il significato è che la funzione di callback deve essere noexcept
?
//probably not valid code - I'm just trying to express the idea
void f_async(std::function<void (int) noexcept> callback) noexcept
{
...
}
Questo può quasi essere realizzato con il seguente codice, ma mi chiedo se c'è un modo per utilizzare qualcosa come il sopra alternativa.
void f_async(std::function<void (int)> callback)
noexcept(callback(std::declval<int>()))
{
...
}
Il problema qui, naturalmente, è che f_async
può essere noexcept(false)
se il callback è noexcept(false)
- voglio fare una dichiarazione forte che f_async
è semprenoexcept
, che significa che è richiamabile solo se si utilizza un callback noexcept
.
Interessante - Non ho davvero visto questo 'std :: enable_if' prima. Sembra promettente. –
Bel tentativo, ma non funziona quando si passa la funzione free a f_async in clang 3.5. –
http://rextester.com/RDIX55455 –