読者です 読者をやめる 読者になる 読者になる

C++と色々

主にC++やプログラムに関する記事を投稿します。

Visual C++

Visual Studio 2017と Bash on Windows を使ってC++に提案中のコンセプトを試す

この記事の内容はVisual C++公式ブログと同様になります。 Learn C++ Concepts with Visual Studio and the WSL | Visual C++ Team Blog 基本はVisual C++公式ブログ通りに行えばよいのですが、VS上でのremote buildの方法が別の記事になっていたり、bash側…

Visual Studio 2017でファイルのエンコードを指定して保存する方法

Visual Studio 2015までは ファイル(F) -> 保存オプションの詳細設定(V) という項目で現在のファイルのエンコーディングを指定して保存できました(画像はVisual Studio 2015)。 ところが、Visual Studio 2017では保存オプションの詳細設定が削除されました。…

出力するスタティックライブラリのファイル名、ディレクトリを変える

d.hatena.ne.jp

Visual C++ 2015 Update 1でC++にmoduleが試験的に実装された

要約 12月1日のUpdate1でVisual C++にmoduleが試験的に実装されました channel9.msdn.com このmoduleの文法はおおよそ http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4214.pdf と近いものになっています。 moduleとは javaのpackage/importや、…

Visual C++でNuGetで簡単にboostインストール

注意 Visual Studio 2015 RCで動作を確認しました。他のVSでは確認していません。 Visual C++プロジェクトで右クリックをして、「NuGetパッケージの管理」をクリックします。 検索フォームにboostと入力します。少し待つと検索結果が出てくるので、画面右に…

Visual C++ 2013のis_trivially_destructibleがバグっている

以下のコードがコンパイル通りません #include <type_traits> struct no { ~no() {} }; static_assert(!std::is_trivially_destructible<no[1]>::value, ""); int main() {} ちなみにVS2015PRでは直っていました</no[1]></type_traits>

Visual C++ 2015 PreviewのC++11/14/1zの新機能

Visual C++ 12.0 CTPと比べて新しく対応したC++11/14/1zの新規の機能を紹介します。 コア言語 Terse range-based for 訳すなら簡便な範囲for文、って感じでしょうか? C++14の次の規格で提案されている機能で、正式に入ることは決定していませんが、ほぼ入る…

VC++2015PRでURIエンコード

Visual C++ 2015でC++1zで提案されているTerse range-based for loopsと、C++11のUnicodeリテラルが入ったので使ってみました。 #include <algorithm> #include <iomanip> #include <sstream> #include <string> namespace { std::string const unreserved_chars = "abcdefghijklmnopqrstuvwxyzABC</string></sstream></iomanip></algorithm>…

Visual C++ 2013 CTPのオーバーロード解決がバグっている

これで3~4時間詰まった… 以下のコードがコンパイルエラーになる #include <initializer_list> void f(int) {} void f(std::initializer_list<int>) {} int main() { f({10}); } /* 1> prog.cpp 1>prog.cpp(7): error C2668: 'f' : ambiguous call to overloaded function 1> prog.c</int></initializer_list>…

Visual C++ Complier Nov 2013 CTPのconstexprのコンパイル時再帰深度

Visual C++ Complier Nov 2013 CTPにて部分的に実装されたconstexprですが、constexpr関数のコンパイル時再帰深度について調べてみました。 constexpr int func(int n) { return n == 0 ? 0 : func(n - 1); } int main() { static_assert(func(512) == 0, ""…

Visual C++ Compiler November 2013 CTPがやってきた!

ソース http://blogs.msdn.com/b/vcblog/archive/2013/11/18/announcing-the-visual-c-compiler-november-2013-ctp.aspx ついに…!ついに…!きた…!Visual C++ 2013 CTPです! なんと、Visual C++で、constexprが使えます!!!(コンストラクタ除く) コンパ…

Visual Studio 2013 RCが出た

Visual Studio 2013 RCがリリースされました。 C++が好きな自分としてはPreviewから更に新しく追加されたC++11/14の機能が気になります。(自分はC99については分からないので触れていません) さっそくPremium版をインストールして遊んでみました。 #include <type_traits></type_traits>…

Google TestをVisual C++ 11でビルドする

解凍したフォルダにmsvcというフォルダがあり、その中にVisual Studio 2008の.slnファイルがあるのでそれを2012に変換してビルドすればいいのですが、そのままビルドしようとするとstd::tuple辺りでエラーが出ます。これはVC++のSTLがまだC++11の可変長テン…

VC++2010がLNK1123

VC++2010のプロジェクトがLNK1123エラーでビルドできなかった。調べたら原因はVS2012をインストールしたことらしい。 ググったらVC++2010のヴァージョンをSP1というものにアップグレードすれば動くらしい。アップグレードしたら動いた。 参考VS2010でLNK1123…

VS2012

VS2012を導入したので(あと2012.11版のVC++)、VS2012で追加された新しいC++11の機能を試してみた。機能を試すことが目的なのでソースの意味や綺麗さは皆無です… #include <vector> #include <iostream> //新しいSTL #include <atomic> #include <chrono> #include <condition_variable> #include <filesystem> #include <future> #includ</future></filesystem></condition_variable></chrono></atomic></iostream></vector>…