Have you tried that at various optimization levels?
At lower optimization levels, the "inline" keyword should not cause the
function to actually get inlined.
If the function is not actually inlined, gcc cannot be aware of the
divide by zero.
I don't happen to know whether gcc would warn if it were aware of the
divide by zero, nor if actually inlining is sufficient to make it
aware. I'm just saying actually inlining should be necessary to make it
aware of the divide by zero.
Martin Ettl wrote:
template <typename T1, typename T2> inline T1 foo (T1 const& a, T2 const& b)
{
// ....
return a/b;
}
int main()
{
std::cout << foo(4.,0) << std::endl;
return 0;
}
I compiled the testprogramm with following command:
g++ -W -Wall -pedantic -o test test.cpp