- Solution
In this lesson, we will look at the solution to using assertations to ensure that the algorithm only accepts natural numbers.
We'll cover the following...
We'll cover the following...
Example
Press + to interact
C++
// staticAssertGcd.cpp#include <iostream>#include <type_traits>template<typename T>T gcd(T a, T b){static_assert(std::is_integral<T>::value, "T should be an integral type!");if( b == 0 ){ return a; }else{return gcd(b, a % b);}}int main(){std::cout << std::endl;std::cout << gcd(3.5, 4.0)<< std::endl; // should be gcd(3, 4)std::cout << gcd("100", "10") << std::endl; // should be gcd(100, 10)std::cout << std::endl;}
Explanation
The static_assert
operator and the predicate std::is_integral<T>::value
enable us to check at compile time whether or not T
is an ...