std::ostream
kullanarak, virgülle ayrılmış bir parametre paketini yazdırmanın en kolay yolu nedir?Std :: ostream kullanarak değişken bir parametre paketi yazdırmanın en kolay yolu nedir?
Örnek:
template<typename... Args>
void doPrint(std::ostream& out, Args... args){
out << args...; // WRONG! What to write here?
}
// Usage:
int main(){
doPrint(std::cout,34,"bla",15); // Should print: 34,bla,15
}
Not: Bu <<
operatörün karşılık gelen bir yük parametresi paketin her türlü uygun olduğu kabul edilebilir.
Ben argümanlar kopyalarını her zaman yapmak ve bunun yerine yönlendirme kullanmak ister gerçek kodda Tabii:
C'de ++ 17, diyelim ki (dışarı << ... <<< args); '. –
Not: Bu bir kopya değil - 'foo << X << Y;' genellikle 'foo << X ile aynı değildir; foo << Y; 'özellikle 'foo' disk üzerinde bir dosya açma gibi yan etkileri olduğunda. – MSalters
@MSalters ayrıca, 'foo << X << Y'' X' ve 'Y' için değerlendirme sırasını belirtmez (C++ 17'den önce), –