<<-Op in globalem Namensraum -> VC 7.1 findets nicht
-
Mein VC++7.1 kann folgenden Code nicht übersetzen:
#include <iostream> namespace a { class Foo { }; } template <typename Tostrm> Tostrm& operator<<(Tostrm& ostrm, const a::Foo& f) { return ostrm; } namespace b { void bar() { a::Foo f; std::cout << f; } }Er sagt er findet den op<< nicht. Wenn ich ihn in den Namensraum b reintu, gehts. Das ist doch nicht korrekt, oder? der Comeau übersetzt es.
Oder kann man den VC++ irgendwie dazu überreden, ohne den Code zu ändern? Das ist ein altes Projekt und ich möchte, dass es im alten und dem neuen Compiler geht (ich weiß ich kann auch mit defines arbeiten. Will ich aber wo möglich vermeiden).
-
Bei mir läßt sich das Programm mit dem MSVC-Toolkit problem- und fehlerlos übersetzen...
-
mhm, bei mir auch

Hab das ja aus nem realen Problem und hab das so weit reduziert und hatte den Fehler immer noch ... Ich kann nur definitiv sagen, dass ich bei meinem Projekt die ganzen streaming-Ops in die Namensräume reinmachen musste, weil er sie sonst nie gefunden hat. Hatte sie bisher immer draußen, weil der BCB Probleme hat, wenn sie im NS sind hat (könig-Lookup?).