#include #include #include #include #include #if 1 //FUNCTION template class Storage { friend void basic(); static size_t s_time; std::vector d_data; public: Storage(); }; template size_t Storage::s_time = 0; template Storage::Storage() {} void basic() { Storage::s_time = time(0); Storage storage; std::sort(storage.d_data.begin(), storage.d_data.end()); } //= // class Friend; // SF. //CLASS template class Composer { friend class Friend; std::vector d_data; public: Composer(); }; class Friend { Composer d_ints; public: Friend(std::istream &input); }; inline::Friend::Friend(std::istream &input) { std::copy(std::istream_iterator(input), std::istream_iterator(), back_inserter(d_ints.d_data)); } //= #else //MEMBER template class Composer; class Friend { Composer *d_ints; public: Friend(std::istream &input); void sorter(); }; template class Composer { friend void Friend::sorter(); std::vector d_data; public: Composer(std::istream &input) { std::copy(std::istream_iterator(input), std::istream_iterator(), back_inserter(d_data)); } }; inline Friend::Friend(std::istream &input) : d_ints(new Composer{ input }) {} inline void Friend::sorter() { std::sort(d_ints->d_data.begin(), d_ints->d_data.end()); } //= #endif