Skip to content

Commit dc76a87

Browse files
committed
noinline minimal experiment
1 parent e5318fa commit dc76a87

File tree

5 files changed

+29
-0
lines changed

5 files changed

+29
-0
lines changed

noinline/somelib.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#pragma once
2+
3+
#if defined(_MSC_VER)
4+
#define SOMELIB_NOINLINE __declspec(noinline)
5+
#else
6+
#define SOMELIB_NOINLINE __attribute__((noinline))
7+
#endif
8+
9+
int somenumber();
10+
11+
SOMELIB_NOINLINE inline int somenumber() { return 13; }

noinline/somemain.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
int somepart1();
2+
int somepart2();
3+
int main() { return somepart1() - somepart2(); }

noinline/somepart1.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include "somelib.h"
2+
int somepart1() { return somenumber(); }

noinline/somepart2.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#include "somelib.h"
2+
int somepart2() { return somenumber(); }

shared_from_this_custom_deleters.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,17 @@ void obj1_reset() {
8282
// Working again based on the shared_ptr that was created after obj1 was
8383
// reset:
8484
obj2->shared_from_this();
85+
//obj3.reset();
86+
obj2->weak_from_this().reset();
87+
got_bad_weak_ptr = false;
88+
try {
89+
obj2->shared_from_this();
90+
} catch (const std::bad_weak_ptr&) {
91+
got_bad_weak_ptr = true;
92+
}
93+
std::cout << "got_bad_weak_ptr: " << got_bad_weak_ptr << std::endl;
94+
//std::weak_ptr<Atype> obj2_wp(obj2);
95+
//obj2->weak_from_this().swap(obj2_wp);
8596
}
8697
/* Expected output:
8798
obj1_reset()

0 commit comments

Comments
 (0)