#include <chrono>
namespace X
{
using namespace std;
struct A
{
std::chrono::seconds d = 0s; // ok
};
}
namespace Y
{
struct B
{
std::chrono::seconds d = 0s; // error
};
}
Die Fehlermeldung ist:Wie macht man [std :: operator "" s] in einem Namensraum sichtbar?
Fehler: kein passender Literaloperator zum Aufruf 'Operator "" s' mit Argumenten vom Typ 'unsigned long long' oder 'const char *', und keine passende literale Operatorvorlage Std :: Chrono :: Sekunden d = 0s;
Meine Frage ist:
Ich will nicht zu use namespace std;
in namespace Y
; wie sollte ich dann std::operator""s
in namespace Y
sichtbar machen?
gefragt Ich denke, Sie brauchen 'mit Namespace ...;' für die erste, die zweite eine Warnung auf g ++. – Holt
@Holt Ich denke, das ist ein GCC-Bug. Ja, es ist ein reservierter Name, aber wir definieren ihn nicht, benutzen ihn nur, damit es in Ordnung sein sollte. Ich habe nur eine Notiz darüber hinzugefügt, und dieser Klang warnt nicht. – NathanOliver
Dies soll als 'using namespace std :: chrono_literals; 'verwendet werden. Der 'Literals ::' Teil ist redundant. –