<p>Bitcoin Core:</p>
<ul>
<li>v0.1.0...v0.12.x: C++03</li>
<li>v0.13.0...v0.21.x: C++11</li>
<li>v22.0...: C++17</li>
</ul>

CC BY-SA 4.0
2021-09-30T12:23:52.607Z
What particular language features are used from C++17 or even C++11?
Martin Schwarz
CC BY-SA 4.0
2021-09-30T12:29:19.560Z
Lots of them, and which one changes from release to release. IIRC, in the first few C++11 releases some features were avoided because they weren't well supported on all compilers despite nominally supporting C++11.
Pieter Wuille
CC BY-SA 4.0
2020-12-14T18:30:37.257Z
2021-09-29T17:16:58.910Z
2021-09-29T17:16:58.910Z
Pieter Wuille
<p>I can't find the information on which C++ version is being currently used in bitcoin core project?
Is it decided for future releases somehow? How does the situation looks now?</p>
<p>The only thing I could find was <a href="https://bitcoin.stackexchange.com/users/208/pieter-wuille">Pieter Wuille's</a> comment:</p>
<blockquote>
<p>Bitcoin Core is switching to C++11 in the upcoming 0.13 release. Meanwhile, C++14 is already standardized and C++17 is well underway. Stating that Bitcoin Core always uses the latest features seems like a strange statement.</p>
</blockquote>
<p>It may look like some XY problem, so the reason I am asking is my GF is long time C++ dev and I am looking for resources to learn C++ to be able to understand bitcoin code. Her first question was which C++ version it's written in, as it supposedly doesn't make sense to learn older versions.</p>

CC BY-SA 4.0
2020-12-14T15:03:59.400Z
See https://github.com/bitcoin/bitcoin/issues/16684 and the latest comment by MarcoFalke for the specific features (such as the filesystem).
Antoine Poinsot
CC BY-SA 4.0
2020-12-14T15:38:42.933Z
"it supposedly doesn't make sense to learn older versions" I strongly disagree. Even learning C helps develop C++ acquaintance. And it's too early to consider C++11 obsolete. You might want to skip the parts calling the Boost library since they have "The long term future goal ... to remove Boost as a dependency" and replace it with newer C++ features
MCCCS
CC BY-SA 4.0
2020-12-14T16:14:31.293Z
Thanks @darosior! Exactly what I was looking for. @MCCCS thanks for the suggestion.
Tony Sanak
<bitcoin-core><bitcoind><bitcoin-core-development><c++>
What version of C++ is used in Bitcoin Core?
Tony Sanak
# What version of C++ is used in Bitcoin Core?

(Asked by: username_0 on 2020-12-14)

I can't find the information on which C++ version is being currently used in bitcoin core project?
Is it decided for future releases somehow? How does the situation looks now?

The only thing I could find was [username_3 username_3's](https://bitcoin.stackexchange.com/users/208/username_3-username_3) comment:

> Bitcoin Core is switching to C++11 in the upcoming 0.13 release. Meanwhile, C++14 is already standardized and C++17 is well underway. Stating that Bitcoin Core always uses the latest features seems like a strange statement.

It may look like some XY problem, so the reason I am asking is my GF is long time C++ dev and I am looking for resources to learn C++ to be able to understand bitcoin code. Her first question was which C++ version it's written in, as it supposedly doesn't make sense to learn older versions.

**Tags:** bitcoin-core, bitcoind, bitcoin-core-development, c++

> **Comments:**
> **username_1**: See https://github.com/bitcoin/bitcoin/issues/16684 and the latest comment by MarcoFalke for the specific features (such as the filesystem).  
> **username_2**: "it supposedly doesn't make sense to learn older versions" I strongly disagree. Even learning C helps develop C++ acquaintance. And it's too early to consider C++11 obsolete. You might want to skip the parts calling the Boost library since they have "The long term future goal ... to remove Boost as a dependency" and replace it with newer C++ features  
> **username_0**: Thanks @darosior! Exactly what I was looking for. @username_2 thanks for the suggestion.  

---

## 1 answers

### Answer by username_3 on 2020-12-14. Score: 9 | Accepted answer

Bitcoin Core:

* v0.1.0...v0.12.x: C++03
* v0.13.0...v0.21.x: C++11
* v22.0...: C++17

> **Comments:**
> **username_4**: What particular language features are used from C++17 or even C++11?  
> **username_3**: Lots of them, and which one changes from release to release. IIRC, in the first few C++11 releases some features were avoided because they weren't well supported on all compilers despite nominally supporting C++11.  

---

