Your SlideShare is downloading. ×
C++14 binary literals
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

C++14 binary literals

3,692
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,692
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. C++14 2進数リテラル 高橋 晶(Akira Takahashi) faithandbrave@longgate.co.jp 2013/10/26(土) C++14規格レビュー勉強会
  • 2. はじめに • この発表は、C++14のコア言語に導入される予定の 「2進数リテラル (binary literals)」に関するレビュー資料です。 • 提案文書: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3472.pdf • 日本語訳: https://dl.dropboxusercontent.com/u/1682460/translation/C%2B%2B14/ n3472_binary_literals.html
  • 3. 概要 • EWG(Evolution Working Group)は、2012年10月に開催されたポート ランド会議にて、コア言語に2進数リテラルのサポートを追加することを 決定した。 • 2進数リテラルは、整数リテラルに0bもしくは0Bプレフィックスを付け る。 • • これはGCCとClangではだいぶ前から拡張機能としてサポートしている。 Java 7、Python、Dといった言語も、同じ構文を持っている。
  • 4. 2つのプレフィックス • 0bと0Bに違いはない。(16進数リテラルの0x/0Xと一緒) • リテラルとして記述できるのは、0か1のみ。 int a = 0b1000; // a == 8 int b = 0B1000; // b == 8
  • 5. ユーザー定義リテラルのサポート • 他のすべての整数リテラルと同様、2進数リテラルはユーザー定義リテラ ルをサポートする。 #include <iostream> #include <string> #include <bitset> std::string operator"" _binstr(unsigned long long x) { return std::bitset<8>(x).to_string(); } int main() { std::string x = 0b1000_binstr; std::cout << x << std::endl; // 00001000が出力される }
  • 6. この提案に含まれないもの • printf()での書式、およびIOstreamでのマニピュレータは、この提案に は含まれない。 • printf()はC言語互換ライブラリであり、C++のスコープ外。 • GCCでも2進数書式は定義されていない。 • IOstreamはLWG(Library Working Group)の作業であるため、まずはコ ア言語のサポートから。 • 2進数表記で出力したい場合は、std::bitsetクラスを使用すればよい。
  • 7. 参照 • GCC http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html • D言語 http://www.digitalmars.com/d/1.0/lex.html#Integer • Python http://docs.python.org/release/3.2.3/reference/ lexical_analysis.html#integerliterals • Java 7 http://docs.oracle.com/javase/7/docs/technotes/guides/language/ binary-literals.html