| #include <stdio.h> | |
| #include <stdint.h> | |
| namespace a { | |
| class c { | |
| public: | |
| c(); | |
| ~c(); | |
| void func1() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func2() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func3() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| }; | |
| c::c() {} | |
| c::~c() {} | |
| } | |
| namespace aa { | |
| class cc { | |
| public: | |
| cc(); | |
| ~cc(); | |
| void func1() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func2() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func3() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| }; | |
| cc::cc() {} | |
| cc::~cc() {} | |
| } | |
| namespace b { | |
| class c { | |
| public: | |
| c(); | |
| ~c(); | |
| void func1() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func3() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| }; | |
| c::c() {} | |
| c::~c() {} | |
| } | |
| namespace c { | |
| class d { | |
| public: | |
| d () {} | |
| ~d() {} | |
| void func2() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| void func3() | |
| { | |
| puts (__PRETTY_FUNCTION__); | |
| } | |
| }; | |
| } | |
| namespace ns { | |
| template <typename Type> struct Foo { | |
| template <typename T> void import() {} | |
| template <typename T> auto func() {} | |
| operator bool() { return true; } | |
| template <typename T> operator T() { return {}; } | |
| template <typename T> void operator<<(T t) {} | |
| }; | |
| template <typename Type> void g() {} | |
| } // namespace ns | |
| int main (int argc, char const *argv[]) | |
| { | |
| a::c ac; | |
| aa::cc aac; | |
| b::c bc; | |
| c::d cd; | |
| ac.func1(); | |
| ac.func2(); | |
| ac.func3(); | |
| aac.func1(); | |
| aac.func2(); | |
| aac.func3(); | |
| bc.func1(); | |
| bc.func3(); | |
| cd.func2(); | |
| cd.func3(); | |
| ns::Foo<double> f; | |
| f.import <int>(); | |
| f.func<int>(); | |
| f.func<ns::Foo<int>>(); | |
| f.operator bool(); | |
| f.operator a::c(); | |
| f.operator ns::Foo<int>(); | |
| f.operator<<(5); | |
| f.operator<< <ns::Foo<int>>({}); | |
| ns::g<int>(); | |
| ns::g<char>(); | |
| return 0; | |
| } |