/// bugs code with comments #include <iostream> #include <memory> #include <unordered_map> using namespace std; class A { public: A(const std::unordered_map<int, int > &ref) : ref_m(ref) {} void test1(int index) { // std::cout…
  Introduction: Before the possibilities of the new C++ language standard, C++11, the use of templates was quite limited when it came to implementing for instance function objects (functors) & tuple facilities. Implementing these sort of things using…
Variadic Templates 1.function template:利用“参数个数逐一递减”的特性,实现递归函数调用 template <typename T, typename... Types> void func(const T& firstArg, const Types&... args) { 处理 firstArg func(args...); } 例一.实现类似 python 3 的 print() void print() { cout <<…
版权声明:本文为博主原创文章,未经博主允许不得转载. 这次主要介绍C++11的又一个新特性 Variadic Templates (可变模板参数) 它的实现类似于initializer_list<>,它可是使类模板接受一包参数 本节主要应用递归的形式介绍 Variadic  Templates 1.简单的调用 #include <iostream> #include "string" using namespace std; void printX() {}//…
在C++中,基于以下如下我们通过以引用reference的形式传递变量. (1)To modify local variables of the caller function A reference(or pointer) allows called function to modify a local variable of the caller function. For example, consider te following example program where fun()…
char & operator[](int i);const char & operator[](int i);/*const char & operator(int i);*/编译出错:error C2556: 'const char &MyString::operator [](int)' : overloaded function differs only by return type from 'char &MyString::operator [](int…
一.新特性介绍 2.0新特性包含了C++11和C++14的部分 1.2 启用测试c++11功能 C++ 标准特定版本的支持,/Zc:__cplusplus 编译器选项启用 __cplusplus 预处理器宏以针对最新的 C++ 语言标准支持报告更新的值. 默认情况下,Visual Studio 始终为 __cplusplus 预处理器宏返回值“199711L”,__cplusplus 预处理器宏通常用于报告. 因为很多现有代码需要此宏的值与“199711L”匹配,所以编译器不会更改此宏的值,除非…
从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如: class Person { public: Person(const std::string& name): _name(name){} std::string name() const { return _name; } private: std::string name; } inline Person operator "" _psn (const char *name, size_t n)…
VS2008, 写一个简单的demo的时候出现了这个: 1>------ Build started: Project: GetExportTable, Configuration: Release Win32 ------1>Compiling...1>main.cpp1>e:\tzcode\getexporttable\getexporttable\GetExportTable.h(61) : warning C4996: 'scanf': This function or v…
首先注意,const int * p 和int const *p 是一样的,并且不管是不是*p,即使const int i和int const i也是一样的,所以我们接下来只讨论int const * p和int * const p的不同 对于这种问题,我们只用将const 的位置固定,然后再看后面的东西,一般规则是后面的东西不能在进行赋值或者修改.例如下面: #include<stdio.h> int main(int argc,char *argv[]) { int i = 10; int…