2402d,d变量2

原文
你最好实现接受参数并在Variant中包装的函数.
这是我想出的最好的,应该可复制/粘贴到其他代码中:

void foo(Variant x, Variant y) {
    ... }
import std.meta : allSatisfy;
enum isVariant(T) = is(T == Variant);
//这会在`CTFE`很糟糕,但是...
string argsAsVariants(size_t count)
{
   
   import std.format;
   import std.range;
   import std.alglorithm;
   import std.array;
   return iota(count).map!(i => format("Variant(args[%s])", i).join(",");
}
//垫片
auto foo(Args...)(Args args) if (!allSatisfy!(isVariant, Args))
{
   
    mixin("return foo(", argsAsVariants(args.length), ");");
}

-史蒂夫
同一主题另一个变体:

void foo(Variant x, Variant y)
{
   
    import std.stdio: writeln;
    writeln("x = ", x);
    writeln("y = ", y);
}
//在变参列表上映射
template mapArgs(alias fun)
{
   
    auto mapArgs(Args...)(auto ref Args args)
    {
   
        import std.typecons: tuple;
        import core.lifetime: forward;
        import std.meta: Map = staticMap;
        auto ref mapArg(alias arg)()
        {
   
            return fun(forward!arg);
        }
        return tuple(Map!(mapArg, args));
    }
}
import std.variant: Variant;
import std.meta: allSatisfy;
enum isVariant(T) = is(T == Variant);
auto foo(Args...)(Args args)
    if (!allSatisfy!(isVariant, Args))
{
   
    return .foo(mapArgs!Variant(args).expand);
}
void main()
{
   
    foo(123, 456);
    foo("hello", "world");
}

相关推荐

  1. 2402d,d变量2

    2024-02-03 20:58:03       56 阅读
  2. db2实例的环境变量

    2024-02-03 20:58:03       28 阅读
  3. 2402. 2-SAT 问题(tarjan,2-SAT模板题)

    2024-02-03 20:58:03       44 阅读
  4. cf240-B-Mashmokh and ACM DP

    2024-02-03 20:58:03       28 阅读
  5. 2405C++,编译期根据成员变量地址获取其名称

    2024-02-03 20:58:03       37 阅读
  6. 【力扣100】240.搜索二维矩阵2

    2024-02-03 20:58:03       68 阅读
  7. LeetCode240. Search a 2D Matrix II

    2024-02-03 20:58:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 20:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 20:58:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 20:58:03       82 阅读
  4. Python语言-面向对象

    2024-02-03 20:58:03       91 阅读

热门阅读

  1. 个人建站前端篇(四)ssr项目路由

    2024-02-03 20:58:03       52 阅读
  2. 互联网摸鱼日报(2024-02-02)

    2024-02-03 20:58:03       52 阅读
  3. C#解决在Winform中绘图异常闪烁问题

    2024-02-03 20:58:03       45 阅读
  4. 1291. Sequential Digits

    2024-02-03 20:58:03       55 阅读
  5. 【前端】弹框组件

    2024-02-03 20:58:03       50 阅读
  6. MYSQL函数

    2024-02-03 20:58:03       44 阅读
  7. Elastic Search

    2024-02-03 20:58:03       56 阅读
  8. 开源软件的影响力

    2024-02-03 20:58:03       49 阅读
  9. 【MySQL】MySQL 查询两个日期内的每一天

    2024-02-03 20:58:03       48 阅读
  10. 在nodejs中使用mysql2

    2024-02-03 20:58:03       48 阅读
  11. themeleaf:入门(一)

    2024-02-03 20:58:03       44 阅读
  12. kotlin 多字段去重

    2024-02-03 20:58:03       42 阅读