I see the following from a run report attachment
( full run report on another matter at:
http://llvm.org/bugs/show_bug.cgi?id=6344 )
[ side matter: ... I am not so sure about the 'deprecated' asserted -- standard reference so stating please? but thanks for the fix
]
/usr/bin/clang++ -Wall -g -I/usr/include/mysql
-I/usr/include/c++/4.1.1/ -I/
usr/include/c++/4.1.1/x86_64-redhat-linux -c -o obj/bind.o
src/bind.c
clang: warning: treating 'c' input as 'c++' when in C++ mode,
this behavior is deprecated
In file included from src/main.c:8:
In file included from src/main-h.h:11:
In file included from src/glossary.h:18:
In file included from src/../lib/glossary.h:46:
src/../lib/exceptions.h:23:1: warning: struct 'out_of_range'
was previously declared as a class [-Wmismatched-tags]
struct out_of_range {
^~~~~~
class
In file included from src/main.c:8:
In file included from src/main-h.h:11:
In file included from src/glossary.h:18:
In file included from src/../lib/glossary.h:32:
src/../lib/type_names.h:19:47: note: previous use is here
class out_of_range;
^
I see the following from a run report attachment
( full run report on another matter at:
http://llvm.org/bugs/show_bug.cgi?id=6344 )
[ side matter: ... I am not so sure about the 'deprecated'
asserted -- standard reference so stating please? but thanks
for the fix
]
/usr/bin/clang++ -Wall -g -I/usr/include/mysql
-I/usr/include/c++/4.1.1/ -I/
usr/include/c++/4.1.1/x86_64-redhat-linux -c -o obj/bind.o
src/bind.c
clang: warning: treating 'c' input as 'c++' when in C++ mode,
this behavior is deprecated
In file included from src/main.c:8:
In file included from src/main-h.h:11:
In file included from src/glossary.h:18:
In file included from src/../lib/glossary.h:46:
src/../lib/exceptions.h:23:1: warning: struct 'out_of_range'
was previously declared as a class [-Wmismatched-tags]
struct out_of_range {
^~~~~~
class
In file included from src/main.c:8:
In file included from src/main-h.h:11:
In file included from src/glossary.h:18:
In file included from src/../lib/glossary.h:32:
src/../lib/type_names.h:19:47: note: previous use is here
class out_of_range;
^
The problem is that you should consistently either call a type a struct, or a class.
You write:
namespace MinimalModeMultiParadigm {
...
struct out_of_range {
...
src/../lib/type_names.h
------------------
namespace MinimalModeMultiParadigm {
...
class out_of_range;
...
Notice how MinimalModeMultiParadigm::out_of_range is defined as a class in one place, and a struct in the other. While these two are basically equivalent in C++, you are being warned that you are being inconsistent. Change either both to a struct, or both to a class. It is probably easier to change the one in type_names.h, as changing the other will effect members in the object.
Does that help?
Chris
Thank you for the 'fast track' explanation from your trained eyes
It permitted me to 'see' into the (what I take to be a) warning more easily; I read a bit more at
C++ classes - Wikipedia
and think I see how this divergence crept in our code as it has been re-worked over time
Commits into this part of the code are not wholly mine, and we'll discuss approaches at the next code review, I am sure -- I take the matter to be 'lint' and pedantic (in the good sense) review of a artifact of how the code evolved being surfaced by 'clang' so that we might address it uniformly
Thank you, again
-- Russ herrold