C++11内存模型

Introduction

void undefined_behaviour_with_double_checked_locking() {

if (!resource_ptr) { // 1

std::lock_guard<std::mutex> lk(resource_mutex);

if (!resource_ptr) { // 2

resource_ptr.reset(new ......

在C++17中的部分新特性

C++17已经发布了有一些时候,并且很多的编译器已经完成了对C++17的支持,那对于C++17中的新特性,我也好奇的玩了一些,其中的几个新特性特别吸引我的注意。

if-init

Grammar

if ( init-statement condition )

init-statement 可以是:

表达式语句(可以是空语句,仅;)

声明语句

Thinking

if-......

Const Reference of Pointer

问题起源:

在子类中实现一个模板父类的纯虚函数的时候,不能正确的通过编译。

template<typename T>

struct Fuck {

virtual void shit(const T&) = 0;

}

shit函数接受一个常量引用,当我们使用一个指针类型(A*)来实例化这个模板类的时候,函数shit的类型就应该是:

void shit(const......