trurle: (lem)
trurle ([personal profile] trurle) wrote2009-12-01 05:01 pm

Морские рассказы

C++ подобен морю.

В STL есть класс pair:
#include <utility>
#include <iostream>

using namespace std;

int main()
{
    pair<int, float> p;
    p.first = 3;
    p.second = 4.5;
    cout << p.first << "," << p.second << endl;
}
теперь попробуем у него унаследовать.
#include <utility>
#include <iostream>

using namespace std;

template<typename T> class range : public std::pair<T,T> {
public:
    range(T v) : std::pair<T,T>(v,v) {}
    bool in(T v) { return first <= v && v <= second; }
};
Компилируется? Нет, не компилируется в gcc 4.x, а как компилируется? Вот так:
#include <utility>
#include <iostream>

using namespace std;

template<typename T> class range : public std::pair<T,T> {
public:
    range(T v) : std::pair<T,T>(v,v) {}
    bool in(T v) { return std::pair<T,T>::first <= v && 
                          v <= std::pair<T,T>::second; }
};
Мне это кажется весьма примечательным

Женился или срезал?

[identity profile] trurle.livejournal.com 2009-12-01 05:10 pm (UTC)(link)
Там дальше сюжет шолом-алейчемовский/балшевис-зингеровский или шукшинский?

Re: Женился или срезал?

[identity profile] ak-47.livejournal.com 2009-12-01 05:21 pm (UTC)(link)
Сам не знаю. Направо - красивые, налево - умные. Боюсь разорваться. :)