总结很好
SPeak
-
【C++11】异步操作 -
C++ 包管理器选哪个?@unamed-coder 有现成的源, 只是mcpp社区准备单独维护一个 支持模块化的库集合所以自建
-
在CLion 2025.3.2中配置xmake项目@FrozenLemonTee 了解, 那么不用UI界面可以配置这些吗 例如: 修改配置文件 或 命令行的方式
-
C++ 包管理器选哪个?目前社区使用的是xmake来作为宝管理器, 可以自建包索引 可以试一试
-
在CLion 2025.3.2中配置xmake项目不知道clion支不支持编辑配置文件或使用命令的方式配置这些
-
在CLion 2025.3.2中配置xmake项目这个工具链配置 和 xmake使用的工具链会有关联吗 , 还是工具链配置是为了 库查找/智能提示
-
小白学习给点建议 - C语言学习@johanvx 这个也是非常经典的公开课 中国大学Mooc和B站上应该都能找到视频
-
小白学习给点建议 - C语言学习最近我在筹划现代C++爱好者社区, 也准备搞个现代C++入门教程, 可以先关注一下
-
小白学习给点建议 - C语言学习可以现在xtzx上看看大学的公开课(应该可以免费观看). 学习编程动手实践非常关键, 要在本地搭建环境多写, 在这个过程中 不断遇到问题 然后解决问题 慢慢就就锻炼出来了
https://www.xuetangx.com/search?query=C语言&org=1&classify=&type=&status=&ss=manual_search&page=1

-
第一个文件注释掉D2X_wait后直接报错退出这个之前有个类似情况, 程序遇到死循环这个就可能发生. 重新运行每次都会这样吗
-
现代C++泛型编程初识 - 类模板到模板特例化及具体应用示例文章导读
- 一、类模板与模板特化(全特化与偏特化)
- 二、类模板与其模板特化的应用
- 三、模板特化存在性问题
一、类模板与模板特化(全特化与偏特化)
从接受类型的角度
类模板:全集R
模板偏特化(部分特化):为全集的一个子集A
模板全特化:为R中的一个"点",或者说为R中的一个元素
匹配规则:越特化匹配优先级越高(见下面例子)
1.类模板
可以接受任意类型
// R template<typename T> class A {}; // 类模板是能接受任意类型,A后面不需要(不能)任何处理2.模板偏特化(局部特化)
可以接受任意指针类型
// A template<typename T> class A<T *> {}; // 类模板A的偏特化版本,在A后指出特化的范围3.模板全特化
指定接受int类型
template<> class A<int> {} // 类模板A的全特化版本(已经是类模板的一个实例了),在A后直接指出明确类型int4.例子:
#include <iostream> #include <string> using namespace std; template<typename T> class A { public: A() { cout << "R" << endl; } }; /* 注释1 -- 接受指针 template<typename T> class A<T *> { public: A() { cout << "A" << endl; } }; */ /* 注释2 -- 接受int template<> class A<int> { public: A() { cout << "int" << endl; } }; */ int main() { A<string> r; // 1 A<char *> a; // 2 A<int> i; // 3 return 0; }5.测试不同情况:
当只有一个类模板(可接受任意类型R)存在时,1, 2, 3都使用类模板实例化

注释1是接受所以指针类型(R的子集A),所以称其为类模板A的偏特化(范围特化)。即把类模版A所能接受的指针类型单独处理(实例化)。当取消注释1时:char * 将由这个模板类A的偏特化版本(范围特化,局部特化)处理。

注释2只接受int类型的参数(可以看出是全局R中的一个元素)。当你用int实例化A时,将会由这个全特化版本来实现(而不会使用可以接受任意类型的版本(泛化版))。

二、类模板与其模板特化的应用
用模板的偏特化 实现一个 能移除任意类型const属性的模板类:remove_const 主要功能和用法: 功能: 给remove_const一个类型后 --1.(情况1)如果这个类型没有const属性则获得这个类型本身。 --2.(情况2)如果这个类型有const属性则移除它。 用法: remove_const<Type>::type 使用场景: 当拿到一个未知变量时,想获得这个变量(或对象)的非const的类型1.实现情况1
似乎没做什么事,aa是int符合情况1。但情况2不符合,bb没有变成int。
#include <iostream> #include <type_traits> template<typename T> struct remove_const { using type = T; }; int main() { int a = 1; const int b = 2; remove_const<decltype(a)>::type aa = 3; remove_const<decltype(b)>::type bb = 4; std::cout << std::is_same<decltype(aa), int>::value << std::endl; std::cout << std::is_same<decltype(bb), int>::value << std::endl; return 0; }运行结果:

2.实现情况2
从上面的实现可以看出,当传给模板的参数是带const类型时它还会返回带const属性的类型。同时从remove_const的定义也可以看出他是个 复读机 你给他什么类型他就给你什么类型。
这时候可以使用上面介绍的偏特化的性质,来把带有带const的类型这个子集从全集中分离出来 特殊处理。如下:
#include <iostream> #include <type_traits> template<typename T> struct remove_const { using type = T; }; template<typename T> struct remove_const<const T> { using type = T; }; int main() { int a = 1; const int b = 2; remove_const<decltype(a)>::type aa = 3; remove_const<decltype(b)>::type bb = 4; std::cout << std::is_same<decltype(aa), int>::value << std::endl; std::cout << std::is_same<decltype(bb), int>::value << std::endl; return 0; }运行结果:
给带const的类型,写了一个特化版本。所以当remove_const接受一个带const的类型时,就会通过这个偏特化版本实例化,由于这个偏特化版本把const从类型中分离出来了,则这里的T就是没有const的类型,从而实现去除类型const的功能。

三、模板特化存在性问题
一个类模板的特化,是对某一个类模板的子集做特化处理的。而它不能"独立存在"。既只有存在一个类模板X, 才能存在对它特化的版本。
template<typename T> class A<T *> {}; int main() { return 0; }
-
xlings install d2x:mcpp-standard报错xlings安装的时候是再windows下安装的, 还是wsl下安装的啊。安装和使用要一致 (如果再wsl下使用需要安装linux版本
包名找不到, 可以运行
xim --update index然后再试一试呢 如果还没有 可以运行xim -s d2x把搜索的结果贴到下面一下 -
xlings 安装失败,git网络问题 - [xlings:xim] main: error - Cloning into 'xim-pkgindex'... remote: [session-ac42ac85] reject by mode [ja-p] The requested URL returned error: 400@saul-goodman-lja 嗯嗯, 可能是gitee网络服务的问题
-
xlings 安装失败,git网络问题 - [xlings:xim] main: error - Cloning into 'xim-pkgindex'... remote: [session-ac42ac85] reject by mode [ja-p] The requested URL returned error: 400git clone https://gitee.com/sunrisepeak/xim-pkgindex.git
感觉好像是被拦截了 手动用上面命令测试一下网络 看看有没有问题
-
xlings安装问题@xuxubaobao 按下面尝试删除旧版本xlings 然后重新安装,
把安装过程的log贴一下 我分析下什么原因 -
问问大家写CPP项目使用的规范如果作为一个库设计者的话, 感觉总体遵守
- 接口易用性优先 (底层实现可以复杂, 但接口要尽可能的易用和理解
- 区分内部接口和外部接口, 最小集合暴露给使用者
谷歌有个C++风格指导: https://google.github.io/styleguide/cppguide.html
在了解到一个项目如何架构和设计后, 又要回到现实 -
根据当下情况和目标, 对项目做出合适的架构, 而不要过渡设计, 因为每个项目都有他发展的时间段, 每个时期, 目标不同例如: 对于要快速能用或上线的MVP, 目标是能用就行, 反而没有太多设计就是好的设计
-
xlings 安装失败@maoapoot 还记得第一安装为什么失败吗?网络原因之类的吗 还是 安装一半的 时候 中断了啊
-
xlings 安装失败可以先手动删除旧版本xlings
rm -rf /home/xlings然后重新运行安装命令 看行不行
-
xlings安装问题source 一下 或者重新 打开一下终端刷新一下环境变量呢