#include <iostream>
using namespace std;
class foo
{
public:
// lvalue/rvalue修飾された関数は表示されない
auto func1() && -> int
{
return 1;
}
// cv修飾された関数も表示されない
auto func2() const -> int
{
return 2;
}
//例外を投げないと指定された関数も表示されない
auto func3() noexcept -> int
{
return 3;
}
// 当然、全てを合わせた形式も表示されない
auto func4() const & noexcept -> int
{
return 4;
}
//noexceptが関数名だと認識される
int func5() noexcept(true)
{
return 5;
}
};
//alignas が関数だと認識される
alignas(double) int z{6};
int main()
{
foo x;
int y = foo().func1()+ x.func2()+ x.func3()+x.func4()+x.func5()+z;
cout << y << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgZm9vCnsKcHVibGljOgovLyBsdmFsdWUvcnZhbHVl5L+u6aO+44GV44KM44Gf6Zai5pWw44Gv6KGo56S644GV44KM44Gq44GECiAgYXV0byBmdW5jMSgpICYmIC0+IGludAogIHsKICAgIHJldHVybiAxOwogIH0KLy8gY3bkv67po77jgZXjgozjgZ/plqLmlbDjgoLooajnpLrjgZXjgozjgarjgYQKICBhdXRvIGZ1bmMyKCkgY29uc3QgIC0+IGludAogIHsKICAgIHJldHVybiAyOwogIH0KLy/kvovlpJbjgpLmipXjgZLjgarjgYTjgajmjIflrprjgZXjgozjgZ/plqLmlbDjgoLooajnpLrjgZXjgozjgarjgYQKICBhdXRvIGZ1bmMzKCkgbm9leGNlcHQgLT4gaW50CiAgewogICAgcmV0dXJuIDM7CiAgfQovLyDlvZPnhLbjgIHlhajjgabjgpLlkIjjgo/jgZvjgZ/lvaLlvI/jgoLooajnpLrjgZXjgozjgarjgYQKICBhdXRvIGZ1bmM0KCkgY29uc3QgJiBub2V4Y2VwdCAtPiBpbnQKICB7CiAgICByZXR1cm4gNDsKICB9Ci8vbm9leGNlcHTjgYzplqLmlbDlkI3jgaDjgajoqo3orZjjgZXjgozjgosKICBpbnQgZnVuYzUoKSBub2V4Y2VwdCh0cnVlKQogIHsKICAgIHJldHVybiA1OwogIH0KfTsKLy9hbGlnbmFzIOOBjOmWouaVsOOBoOOBqOiqjeitmOOBleOCjOOCiwphbGlnbmFzKGRvdWJsZSkgaW50IHp7Nn07CgppbnQgbWFpbigpCnsKICBmb28geDsKICBpbnQgeSA9IGZvbygpLmZ1bmMxKCkrIHguZnVuYzIoKSsgeC5mdW5jMygpK3guZnVuYzQoKSt4LmZ1bmM1KCkrejsKICBjb3V0IDw8IHkgPDwgZW5kbDsKCnJldHVybiAwOwp9