std::is_nothrow_assignable in C++ with Examples
Last Updated :
12 Jun, 2020
The std::is_nothrow_assignable template of C++ STL is present in the <type_traits> header file. The std::is_nothrow_assignable template of C++ STL is used to check whether A is type assignable to B or not and this is known for not to throw any exception. It return the boolean value true if A is type assignable to B, Otherwise return false.
Header File:
#include<type_traits>
Template Class:
template< class A, class B >
struct is_nothrow_assignable;
Syntax:
std::is_assignable<A, B>::value
Parameters: The template std::is_assignable accepts the following parameters:
- A: It represents the parameter in which parameter B is implicitly assign.
- B: It represents the parameter type assignable to A.
Return Value: The template std::is_assignable returns a boolean variable as shown below:
- True: If the type A is assignable to type B.
- False: If the type A is not assignable to type B.
Below is the program to demonstrate std::is_nothrow_assignable template in C++:
Program:
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
struct A {
};
struct B {
B& operator=( const A&) noexcept
{
return * this ;
}
B& operator=( const B&)
{
return * this ;
}
};
class GfG {
};
class gfg {
};
enum class AB : int { x,
y,
z };
int main()
{
cout << boolalpha;
cout << "is int = double? "
<< is_nothrow_assignable< int &,
double >::value
<< endl;
cout << "is struct A = struct A? "
<< is_nothrow_assignable<A, A>::value
<< endl;
cout << "is class B = class A? "
<< is_nothrow_assignable<B, A>::value
<< endl;
cout << "is class B = class B? "
<< is_nothrow_assignable<B, B>::value
<< endl;
cout << "is class AB = class gfg? "
<< is_nothrow_assignable<AB, gfg>::value
<< endl;
cout << "is class Gfg = class gfg? "
<< is_nothrow_assignable<GfG, gfg>::value
<< endl;
return 0;
}
|
Output:
is int = double? true
is struct A = struct A? true
is class B = class A? true
is class B = class B? false
is class AB = class gfg? false
is class Gfg = class gfg? false
Reference: http://www.cplusplus.com/reference/type_traits/is_nothrow_assignable/
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...