noexcept operator
Açıklaması şöyle.
Default argument çağıran tarafından yaratıldığı için şöyle yaparız.
Açıklaması şöyle.
noexcept (true) - exception fırlatılmaz
Bazı metodların imzasında noexcept(true) kelimesi görülür. Bu kelime metodun exception fırlatmayacağını garanti ettiği anlamına gelir.
Açıklaması şöyle.
Having the noexcept(x) specifier in a function declaration means that the function is non-throwing if and only if x evaluates to true.
Metodun exception atıp atmadığını döndürür. Şöyle yaparız.
struct X
{
~X() { };
};
int main()
{
X x;
static_assert(noexcept(x.~X()), "Ouch!");
}
noexcept ve default argumentDefault argument çağıran tarafından yaratıldığı için şöyle yaparız.
void test(const Item& item = Item()) noexcept {
...
}
noexcept(x)Açıklaması şöyle.
Having the noexcept(x) specifier in a function declaration means that the function is non-throwing if and only if x evaluates to true.
Örnek
Şöyle yaparız.
template <class T, size_t N>
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));
Bazı metodların imzasında noexcept(true) kelimesi görülür. Bu kelime metodun exception fırlatmayacağını garanti ettiği anlamına gelir.
Eğer bir metodu kalıtır ve imzadaki noexcept'i kullanmayı ihmal edersek şöyle bir uyarı alırız.Any of the functions defined in the C++ standard library can report a failure by throwing an exception of a type described in its Throws: paragraph. An implementation may strengthen the exception specification for a non-virtual function by adding a non-throwing noexcept-specification.
looser throw specifier for ‘virtual ...’
Açıklaması şöyle.
noexcept (true)'nun tersi noexcept(false) gibi düşünülüyor ancak bu şekilde kullansak ta metodun exception fırlatıp fırlatmamasıyla ilgili bir şey belirtmiş olmayız.
C++ used to have some form of checked exceptions, you may have noticed it has been deprecated and simplified toward a basic noexcept(<bool>) instead: either a function is declared to possibly throw, or it's declared never to.noexcept (false)
noexcept (true)'nun tersi noexcept(false) gibi düşünülüyor ancak bu şekilde kullansak ta metodun exception fırlatıp fırlatmamasıyla ilgili bir şey belirtmiş olmayız.
A function with no exception-specification or with an exception-specification of the form noexcept(constant-expression) where the constant-expression yields false allows all exceptions. An exception-specification is non-throwing if it is of the form throw(), noexcept, or noexcept(constant-expression) where the constant-expression yields true. A function with a non-throwing exception-specification does not allow any exceptions.
Hiç yorum yok:
Yorum Gönder