- 主题:今天看见一个完全看不懂的写法
template<typename... Ts>
struct Overloader : Ts...
{
using Ts::operator()...; // exposes operator() from every base
};
int main()
{
auto o = Overloader{ [] (auto const& a) {std::cout << a;},
[] (float f) {std::cout << std::setprecision(3) << f;} };
}
https://en.cppreference.com/w/cpp/language/using_declaration
不试一下我都看不出这能不能编译通过……
--
FROM 124.217.188.*
main里啥代码也没
happy@ubuntu:~$ $CXX -static -O0 -std=c++2a 1.cpp
happy@ubuntu:~$ gdb -batch -ex 'file a.out' -ex 'disassemble main'
Dump of assembler code for function main:
0x000000000040226d <+0>: push %rbp
0x000000000040226e <+1>: mov %rsp,%rbp
0x0000000000402271 <+4>: mov $0x0,%eax
0x0000000000402276 <+9>: pop %rbp
0x0000000000402277 <+10>: ret
End of assembler dump.
happy@ubuntu:~$ $CXX -v
Using built-in specs.
COLLECT_GCC=/opt/cross/bin/x86_64-linux-musl-g++
COLLECT_LTO_WRAPPER=/opt/cross/bin/../libexec/gcc/x86_64-linux-musl/12.2.0/lto-wrapper
Target: x86_64-linux-musl
--
FROM 222.131.205.*
没调用就没代码
加个 o();就有了。
【 在 z16166 的大作中提到: 】
: main里啥代码也没
: happy@ubuntu:~$ $CXX -static -O0 -std=c++2a 1.cpp
: happy@ubuntu:~$ gdb -batch -ex 'file a.out' -ex 'disassemble main'
: ...................
--
FROM 123.116.125.*
你说得对
o(1.3);
o("test");
【 在 puke 的大作中提到: 】
: 没调用就没代码
: 加个 o();就有了。
--
FROM 222.131.205.*
感觉现在的 C++ 编译器有点牛逼 :D
【 在 z16166 (Netguy) 的大作中提到: 】
: 你说得对
:
: o(1.3);
: o("test");
--
发自xsmth (iOS版)
--
※ 修改:·fanci 于 Feb 21 15:23:44 2023 修改本文·[FROM: 124.217.188.*]
※ 来源:·水木社区
http://m.mysmth.net·[FROM: 124.217.188.*]
修改:fanci FROM 124.217.188.*
FROM 124.217.188.*
现在是真的编译时
【 在 fanci 的大作中提到: 】
: 感觉现在的 C++ 编译器有点牛逼 :D
: 【 在 z16166 (Netguy) 的大作中提到: 】
: : 你说得对
: ...................
--
FROM 122.224.174.*
大牛,我也看不懂
不知道 ... 能这么用
【 在 z16166 的大作中提到: 】
: 你说得对
: o(1.3);
: o("test");
: ...................
--
FROM 123.112.71.*
就是多继承啊,这个o类继承多个仿函数类,然后using是把父类的函数带到子类可见,不过这个需要20才能编译吧,17标准的话还需要写一个deduction guide吧 。
【 在 finlab (挨踢卢瑟) 的大作中提到: 】
: 大牛,我也看不懂
:
: 不知道 ... 能这么用
:
--
FROM 114.254.0.*
配合std::apply, std::visit, parameer pack expanding 用,很好用。
memory aligned 多态
【 在 finlab 的大作中提到: 】
: 大牛,我也看不懂
: 不知道 ... 能这么用
:
--
FROM 115.198.191.*
这个pack还好,但初始化列表能用来构造模版类的基类确实比较神奇
【 在 fanci 的大作中提到: 】
: template<typename... Ts>
: struct Overloader : Ts...
: {
: ...................
--
FROM 223.104.44.*