The issue here is that the temporary file created to perform the header test is ((%conftest.c%)), not ((%conftest.cc%)) or ((%conftest.cpp%)). Changing the
name of the file and re-running gcc gives success.

In ((%mkmf.rb%)), have_header executes cpp_command, which creates the shell command to run. However, cpp_command uses the constant (({CONFTEST_C = "conftest.c"})). It should use a new constant, (({CONFTEST_CPP = "conftest.cc"})).

I've attached a patch that does this as expected. Tests pass; I'm unsure precisely how to construct
a test case that would be appropriate for the Ruby trunk. There are very few guiding examples in the
existing test suite.