Ich habe einen Anwendungsfall für die std::placeholder
in einer Testanwendung, aber ich frage mich, ob in einem Bestreben, Dinge auf einer API-Seite ein wenig sauberer aussehen, gibt es eine Möglichkeit, using
zu biegen, typedef
oder sogar #define
, um den Namespace auf Kopfebene zu aliasieren.Verwendung von/Typedef von Namespace in Header
// .../datarequestprocessor.h
class DataRequestProcessor {
public:
using ProcessFunction = std::function<void(const ResultData &)>;
using RequestResultHandle = std::placeholders; // No go. Same with ::_1
...
};
// ../datarequestprocessor.cpp
ProcessFunction DataRequestProcessor::prepOne()
{
auto func = std::bind(&DataModel::setData,
m_model,
RequestResultHandle::_1);
return func;
}
... // For other variations.
Dies ist rein semantische und auch nur ein Versuch, über die Natur des using
Schlüsselwort zu lernen. Mehr von einer Lernerfahrung als eine reale Anwendung.
Prost
Sie können einen Namespace alias tun ('std :: placeholder' ist ein Namensraum, kein Typ), aber es hat im Namensraum oder Funktionsumfang sein:' Namespace RequestResultHandle = std :: placeholder') – Justin
„No go "ist keine akzeptable Problemaussage. –
Das hat nichts mit 'std :: placeholders' (oder' std :: placeholder', das nicht existiert), was du herausgefunden hättest, wenn du herumgespielt hättest und herausgefunden hättest, dass es bei diesem Problem darum geht Sie verwenden Namespace-Aliase (die nicht im Klassenbereich sein können). –