自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 c++ 一个函数同时支持copy和move(不只是传值)

偶然间遇到一个问题,简而言之就是父类需要提供同时支持move和copy的接口,但子类不一定需要得到对象(也可能需要)。这时候如果按一般的值传递,虽然需要得到对象的子类可以做到不发生多余拷贝,但是不需要对象的子类在左值传递时会发生一次多余拷贝(下面代码中的c->set语句)。如果修改父类接口为左值引用或右值引用,将无法让一个接口同时支持move和copy语义。#include <iostream>#include <variant>struct T{ T () =

2021-07-31 16:58:00 316

原创 c++如何判断一个表达式是否可在编译期得解

namespace datail{ template<auto t> struct can_compile_time_calculate_check_helper { }; template<typename T, typename = void> struct can_compile_time_calculate_check_imple :std::false_type { }; template&.

2021-07-12 17:02:25 237

原创 c++编译期归并排序

偶然看到了这个题目尝试着自己写了一下,不动手还是觉得挺简单的,一动手思前想后敲了两个半小时。#include <iostream>#include <tuple>template<typename itType, int i = 1>struct Next { using type = typename Next < typename itType::next, i - 1 >::type;};template<typename it

2021-02-09 13:22:19 304 1

原创 怎么使用和规避模板函数指针的类型指定

模板用的多的人都知道使用模板函数指针时,必须在指定函数指针时就对类型进行指定template<typename Type>void aaa (Type&&){}int main (int argc, char* argv[]){ std::function<void (int) > f = aaa<int>;}但指定函数指针的地方不是函数实际发生调用的地方,所以参数的引用类型对于指针的指定处来说是不必要的依赖,而且指定类

2020-09-21 11:42:00 265

原创 std::is_abstruct的一种实现

函数入参无法用抽象类定义template<typename Type, typename = void>struct is_abstract{public: static constexpr bool value = true;};template<typename Type>struct is_abstract<Type, decltype (static_cast<void (*) (Type) > (nullptr), void()

2020-07-08 15:53:17 172

原创 c++ 模板 函数也能偏特化?

template<typename Type, typename ...Placeholder, typename std::enable_if_t<sizeof... (Placeholder) == 0, bool> = false>void aaa (Type, Placeholder...){}template<typename Type, typename std::enable_if_t<std::is_same_v<std::string.

2020-07-07 20:48:42 382

原创 C++模板 获得两个模板是否相同,模板的最小大小,某个实现是否来源于某个模板

只处理存放类型的模板附:对于编译器而言,using 重命名模板和原模板在实例化以前属于两个模板,不能简单使用std::is_same的逻辑来处理两个模板是否相同的问题。#ifndef TEMPLATE_PROCESSING_H#define TEMPLATE_PROCESSING_H#include <cstddef>#include <type_traits>template <typename Type, template <typename ...&

2020-06-21 20:58:55 285

原创 乱想的一个数据结构

目前看起来比较接近树化的跳表,或者倒过来的二叉树,虽然不知道有什么用,但是还是画一下

2020-04-05 22:45:50 104

原创 正经的c++面向对象技巧——如何方便的只对特定类暴露特定接口

//目标:在AB获得的对象为同一个的时候,只对A暴露imple的todo接口方法1: 稍显麻烦class Imple;class AReference{ void todo (Imple&);};class BReference{ void todo (Imple&);};class Imple{ //禁止外部获取 ...

2020-04-03 12:44:03 691

原创 从代码出发,思考代码本身,开历史倒车——C/C++宏的奇技淫巧

我想描述的是一个,从c语言的宏出发,通过宏定义和循环包含,将include看做函数调用,对在预编译阶段对将要编译的文本直接进行修改的方式。一种夸张的奇技淫巧,而且不完善,因为include对外部的影响比较有限,只能影响外部的宏而不能直接决定是否启用外部内容,#if的影响不能跨越文件,也没有能跨越文件版本的#if。不知道怎么描述我想表达的事,只能写两段代码。//file_reference...

2020-04-02 23:55:14 175

原创 关于静态反射c++的思考和尝试

编写这个东西的起因是一些关于静态反射性c++的思考,不过本质上用处不大,除非你全部的类都用tuple实现。有兴趣的可以当做一种对于c++奇技淫巧的学习,没兴趣也不用看。main.c#include <iostream>#include <list>#include <vector>#include <numeric>#include...

2020-03-21 09:01:06 450

原创 c++模板类的模板参数类型获取

现在还只是基本,之后有心情会想办法同时获得非类型参数以及顺序template<typename ClassName>struct Template_Type_Traits{};template<template<typename ...Args> class ClassName, typename ...Args>struct Templat...

2020-03-09 03:12:43 3356

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除