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);
}
相关推荐
艾莉丝努力练剑32 分钟前
【AI大模型接入SDK】ChatServer接口测试
网络·c++·人工智能·学习·ai·大模型·sdk
D e re k ZH42 分钟前
C++ 模板与泛型编程进阶(No 2)
开发语言·c++
青少儿编程课堂1 小时前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
eggwyw1 小时前
C++深入浅出探索数据结构的原理
开发语言·c++
eggwyw1 小时前
C++深入浅出讲解希尔排序算法的实现
开发语言·c++
ShineWinsu1 小时前
对于Qt:QProgressBar常见属性的解析
开发语言·c++·qt·进度条·gui·定时器·qprogressbar
ShineWinsu1 小时前
对于Qt:QLCDNumber常见属性以及QTimer的解析
服务器·数据库·c++·qt·gui·qtimer·qlcdnumber
xiaoye-duck2 小时前
《C++ 工具库实战》C++ 解析利器 JsonCpp:从基础使用到封装简易 JSON 工具
c++·json·第三方库
dialect_10 小时前
KMP算法
开发语言·c++·算法
ShineWinsu12 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup