2607d,C++细节比不上d

cpp 复制代码
--- test.d
import std.stdio: writeln;

struct GVec(int N : 2, T) { T x = 0; T y = 0; }
struct GVec(int N : 3, T) { T x = 0; T y = 0; T z = 0; }
struct GVec(int N : 4, T) { T x = 0; T y = 0; T z = 0; T w = 0; }

alias GVec2(T = float) = GVec!(2, T);
alias GVec3(T = float) = GVec!(3, T);
alias GVec4(T = float) = GVec!(4, T);

void main()
{
    import gvec;
    GVec2!int x = GVec2!int(1, 2);
    foo(x);
}
--- gvec.d
import std.stdio: writeln;

struct GVec2(T) { T x, y; }
struct GVec3(T) { T x, y, z; }
struct GVec4(T) { T x, y, z, w; }

void foo(GVec2!int x) {
    writeln(x.x);
    writeln(x.y);
}

D的GVec可以同时多次抽象使用.而C++是不行的.

cpp 复制代码
元<类 A>构 B{
    空 动作(){
        打印("f");
    }
};

元<动 A>构 B{
    空 动作(){
        打印("f");
    }
};
空 主(){
    B<整>a;
}

那个test.d要改成如下:

cpp 复制代码
import std.stdio: writeln;

import gvec;

struct GVec(int N : 2, T) { GVec2!T _data; alias _data this; }
struct GVec(int N : 3, T) { GVec3!T _data; alias _data this; }
struct GVec(int N : 4, T) { GVec4!T _data; alias _data this; }

void main()
{
    GVec2!int x = GVec2!int(1, 2);
    foo(x);
}
相关推荐
水饺编程6 小时前
第1章,[Win32 章节]:在 VS2019 里面安装 MSDN
c语言·c++·windows·visual studio
垆边人似月.6 小时前
华为题:每日温度
数据结构·c++·算法
j7~6 小时前
【算法】专题四.前缀和:一维二维模板,配套 LeetCode 真题,结合同余定理、哈希前缀和,搞定子数组与子矩阵区间求和问题。
数据结构·c++·算法·前缀和·优选算法
水饺编程7 小时前
第1章,[Win32 章节]:编程环境与 MSDN
c语言·c++·windows·visual studio
草莓熊Lotso7 小时前
【C++ 基于微服务的即时通讯系统】基建三件套:gflags + gtest + spdlog 源码编译安装与实战入门
linux·网络·数据库·c++·微服务·log4j
H.莓飛7 小时前
【C++】类与对象(末):static、友元与拷贝优化
linux·开发语言·c++·visual studio
sm_9267870516 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
by2099916 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
colinu16 小时前
C++ 异步任务与线程生命周期:`std::async`、`future`、`thread`、`jthread` 与协作式退出
java·jvm·c++
wuminyu17 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++