VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
長峰
記事: 32
登録日時: 7年前

VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

#1

投稿記事 by 長峰 » 5年前

現状Visual Studio 2013でC++のテンプレートを書くと、<>の間にスペースが自動挿入されます。挿入されないよう設定を変えたいのですが、
Options→Text Editer→C/C++→Formating→Spacingに該当する項目がなく困っています。

スペースの自動挿入を止める方法を教えてください。

コード:

//このままがいい
template<typename T>
using JaggedArray = std::vector<std::vector<T>>;

//スペース自動挿入後
template<typename T>
using JaggedArray = std::vector < std::vector<T> > ;

アバター
lriki
記事: 88
登録日時: 9年前

Re: VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

#2

投稿記事 by lriki » 5年前

C++03 ではテンプレートの括弧がシフト演算子に誤認されるという仕様上の問題があります。
おそらくこれを防止するための整形でしょう。
http://dev.activebasic.com/egtra/2011/08/12/389/

VisualStudio2013 は C++11 に (完全ではありませんが) 対応しているため、
std::vector<std::vector<T>>;
と書いてもコンパイルエラーになりません。
しかしこのコードは、例えば VisualStudio2008 でコンパイルすることはできません。

すこし気持ち悪い整形ですが、移植性を高めるという意味で従っておくのが無難ではないでしょうか。

ISLe()

Re: VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

#3

投稿記事 by ISLe() » 5年前

書式設定の全般の項目のチェックを外せば、『自動で』整形することは止めることができます。

ただし止められるのは『自動で』の部分だけなので、手動で該当箇所を整形すると変更されてしまいます。

長峰
記事: 32
登録日時: 7年前

Re: VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

#4

投稿記事 by 長峰 » 5年前

lriki さんが書きました:VisualStudio2013 は C++11 に (完全ではありませんが) 対応しているため、
std::vector<std::vector<T>>;
と書いてもコンパイルエラーになりません。
しかしこのコードは、例えば VisualStudio2008 でコンパイルすることはできません。

すこし気持ち悪い整形ですが、移植性を高めるという意味で従っておくのが無難ではないでしょうか。
ISLe() さんが書きました: ただし止められるのは『自動で』の部分だけなので、手動で該当箇所を整形すると変更されてしまいます。
Visual Studioの設定では変更できないのですね。
古いコンパイラを使う予定はありませんが、移植性が高まる利点もあるなら気にしないように使っていきます。

お二方とも回答ありがとうございました。

ISLe()

Re: VS2013の設定でC++テンプレートのスペース自動挿入を止めたい。

#5

投稿記事 by ISLe() » 5年前

昨日Community 2015 RCをインストールしたので試してみました。
結果、空白が挿入されるこはありませんでした。
逆に空白を入れて詰められることもありません。

2013はUpdate 5のCTP2およびRCでは修正されているらしいです。

閉鎖

“C言語何でも質問掲示板” へ戻る