#include<iostream>

void b() {
  std::cout << "Global b" << std::endl;
}

namespace merolish {
    namespace gui {
        void b() {
	  std::cout << "merolish::gui::b" << std::endl;
        }
    }

    namespace util {
        void c() {
        }
    }

    void a() {
        gui::b();
    }
}

// can "continue" namespaces, like packages
namespace merolish {
    namespace gui {
        class Button {
        };

        void d() {
        }
    }
}

// anonymous namespace, can't access outside
// file; same effect as declaring static
namespace {
    void anon() {
    }
}

int main() {
    merolish::a();
    merolish::gui::b();

    using merolish::gui::b;
    b();

    using namespace merolish::util;
    c();

    anon();

    using namespace merolish::gui;
    Button button;

    ::b();
}
