boost, dziwna konstrukcja

0

Cześć ;)
Czy może mi ktoś wyjaśnić tą dziwną konstrukcję językową? Takiej w C/C++ jeszcze nie widziałem:

    namespace po = boost::program_options; 
    po::options_description desc("Options"); 
    desc.add_options() 
      ("help", "Print help messages") 
      ("add", "additional options") 
      ("like", "this"); 
5
struct Batman{
	Batman &operator()(const char *){
		return *this;
	}
};

int main(){
	Batman batman;
	batman("na")("na")("na")("na")("!");
}
2

Boost to ogólnie dziwna konstrukcja. :-P

desc.add_options() zwraca zapewne referencję do samego siebie (albo do jakiegoś proxy), oraz ma przeciążony operator (), który też zwraca taką referencję. Dzięki temu można zapewne dodać wiele opcji w jednej takiej linijce.

Dokładnie tak samo jest z operatorem << dla std::cout np.

1 użytkowników online, w tym zalogowanych: 0, gości: 1