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

C++14 binary literals

on

  • 3,791 views

 

Statistics

Views

Total Views
3,791
Views on SlideShare
1,124
Embed Views
2,667

Actions

Likes
1
Downloads
4
Comments
0

11 Embeds 2,667

http://d.hatena.ne.jp 2342
http://faithandbrave.hateblo.jp 155
http://cloud.feedly.com 118
http://www.feedspot.com 31
https://twitter.com 10
http://digg.com 5
http://reader.aol.com 2
http://inoreader.com 1
http://translate.googleusercontent.com 1
http://s.deeeki.com 1
http://feedly.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

C++14 binary literals C++14 binary literals Presentation Transcript

  • C++14 2進数リテラル 高橋 晶(Akira Takahashi) faithandbrave@longgate.co.jp 2013/10/26(土) C++14規格レビュー勉強会
  • はじめに • この発表は、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
  • 概要 • EWG(Evolution Working Group)は、2012年10月に開催されたポート ランド会議にて、コア言語に2進数リテラルのサポートを追加することを 決定した。 • 2進数リテラルは、整数リテラルに0bもしくは0Bプレフィックスを付け る。 • • これはGCCとClangではだいぶ前から拡張機能としてサポートしている。 Java 7、Python、Dといった言語も、同じ構文を持っている。
  • 2つのプレフィックス • 0bと0Bに違いはない。(16進数リテラルの0x/0Xと一緒) • リテラルとして記述できるのは、0か1のみ。 int a = 0b1000; // a == 8 int b = 0B1000; // b == 8
  • ユーザー定義リテラルのサポート • 他のすべての整数リテラルと同様、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が出力される }
  • この提案に含まれないもの • printf()での書式、およびIOstreamでのマニピュレータは、この提案に は含まれない。 • printf()はC言語互換ライブラリであり、C++のスコープ外。 • GCCでも2進数書式は定義されていない。 • IOstreamはLWG(Library Working Group)の作業であるため、まずはコ ア言語のサポートから。 • 2進数表記で出力したい場合は、std::bitsetクラスを使用すればよい。
  • 参照 • 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