unary_function は C++11 から非推奨だったのね。
functional – cpprefjp C++日本語リファレンス
std::cout を覚えただけで C++ を簡単みたく書く初心者ブログが多いよね。
筆者の Tips ページはそいつらが見たら絶望するように STL を使っていたり。
なのでワケワカメの代表 unary_function が使えないのは困ったなぁ。
と思ったけどコメントアウトしただけで動くじゃん。
それと auto で便利になったとかも見かける。
いや、class で this を戻すのに auto 指定できるレベルでないとそれほど。
…できるジャン!
// stl.cc #include <iostream> #include <vector> #include <algorithm> /** * Fedora 33 * g++ stl.cc * * macOS Big Sur * clang++ -std=c++14 stl.cc */ /* * みんな大好き C++ のテンプレート * C++11 より unary_function は非推奨 * なんだけど、継承する必要が無くなっただけだったり */ template <class T> struct outputfunc { // : public std::unary_function<T, void> { void operator()(T obj) { std::cout << obj << " ♪♪♪ "; } }; class App { public: App() { std::vector<std::string> vec = {"SUZUKIの", "バイクは", "カッコイイ"}; // 関数オブジェクトにしたけど今は範囲ベース for のほうがいい std::for_each(vec.begin(), vec.end(), outputfunc<std::string>()); } ~App() { std::cout << std::endl << "今日も元気でね!" << std::endl; } static auto init() { // auto で this を戻せる return new App(); } }; int main(int argc, char* argv[]) { // イヂワルな初期化 auto app = App::init(); delete app; return 0; }
macOS ではオプションが必要なのね、c++17 指定でもいい。
for も Python と同じようにできるし、使わない間に随分進化していた。
後は :: と -> が全部ドットになれば、って今更無理だろうな。
たまにしか C++ を触らないとどうしてもソコがね。