c++
皮皮虾图形学
shader mathematica
mathgraphic@163.com
展开
-
boost::enable_if
template class demo_class {}; template class demo_class>::type > { public: void print() { __FUNCTION__; } }; template class demo_class>::type> { public: void print() { __FUNCTION__; }原创 2018-01-31 14:07:19 · 259 阅读 · 0 评论 -
c++ 一种给任意函数体加锁的方法
class MyClass { public: MyClass() = default; ~MyClass() = default; void funcA(int param) { withMutex([&] { std::cout << param + 2<< std::endl; }); } void func...原创 2018-02-27 16:23:05 · 3932 阅读 · 0 评论 -
C++ 基础4
std::functionstruct Foo { Foo(int num) : num_(num) {} void print_add(int i) const { std::cout << num_ + i << '\n'; } int num_; }; void print_num(int i) { std::cout << i << '\n'; } struc原创 2018-01-19 17:26:45 · 208 阅读 · 0 评论 -
C++ 基础3
别名系统当遇到某个软件模块c++标准比较高,不支持某个特性的时候,而另外一个库刚好有类似的功能,用最少的代码实现兼容。比如文件,vs2017都不支持。这个时候可以使用boost库来进行模拟。#pragma once#include namespace std{ namespace experimental { template using optional = boost原创 2018-01-19 15:55:18 · 275 阅读 · 0 评论 -
C++ 基础 2
可变参数模板template<class... Args>void emplace(Args&& ... args){}元数据的声明typedef int meta_dat1;using meta_data1 = int;元函数的定义template<int N, int M>struct meta_func{ static const int value = N+M;};cout原创 2018-01-18 18:27:43 · 168 阅读 · 0 评论 -
move forward
根据std::move和std::forward不能做什么来熟悉它们是一个好办法。std::move没有move任何东西,std::forward没有转发任何东西。在运行期,它们没有做任何事情。它们没有产生需要执行的代码,一byte都没有。std::move和std::forward只不过就是执行cast的两个函数(实际上是函数模板)。std::move无条件地把它的参数转换成一个右值转载 2018-02-02 08:46:15 · 2529 阅读 · 0 评论 -
C++ 基础知识 (1)
template struct min { static std::size_t const value = a < b ? a : b; }; template struct alignment_of { static std::size_t const value = test::min< sizeof(T1), sizeof(T2) >::value原创 2018-01-17 17:08:50 · 202 阅读 · 0 评论 -
C plus pulse 11 (7)
void print(std::initializer_list<int> vals){ for(auto p= vals.begin();p!=vals.end();++p ){ std::cout<<*p;}}//—————————————————-print({1,2,3,4,5});explicit construct function if accept a原创 2018-01-31 22:18:51 · 244 阅读 · 0 评论 -
C++ 基础5
(转译)在C+11中,对于defaulted函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量。C++的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则转载 2018-01-24 15:30:20 · 197 阅读 · 0 评论 -
使用Lamda表达式作为回调函数
class view { public: void setOnlineStatusCallback(std::function<void()> callback) { onlineStatusCall = callback; } void usecallback() { onlineStatusCall(); } private: std...原创 2018-02-24 15:22:24 · 993 阅读 · 0 评论