Das war ein GCC-Bug (der nur einige Tage im Entwicklungsbaum war). Das Problem wurde durch eine andere Korrektur verursacht, die GCC veranlasste, implizite typedefs nicht-anonym zu betrachten und somit die äußeren Strukturen typisiert zu bekommen (nicht korrekt). Der Testfall ist jetzt behoben, ich wäre an weiteren Warnungen interessiert, die möglicherweise falsch erscheinen.
Sie haben zwei verschiedene Definitionen einer Klasse. Das Kompilieren der beiden führt zu einem direkten Konflikt, wenn diese beiden nicht in separaten Namespaces enden. Ich nehme an, das könnte richtig sein.
Sie sollten danach suchen, ob sich die beiden Implementierungsfunktionen gegenseitig ausschließen. Es kann zwei verschiedene Quelldateien mit separaten Definitionen geben, aber es gibt Fälle, in denen zwei Definitionen sinnvoll sein könnten (dh ich habe eine Threading-API für Windows und Linux und ich muss zwei verschiedene Definitionen basierend auf meinen Kompilierungseinstellungen haben).
Tags und Links c++ gcc c++14 one-definition-rule