どうも。お久しぶりです。
色々と書きたいこと、やりたいこと、あるんですけども、なんだかんだで就活大変ですね。まあまあ頑張ってます。
それはともかくとして、今回はC++の話です。
とあるSDKがヘッダでusing namespace std;してるって話題を見まして、要は、名前空間を汚す(※)のって良くないよね行儀悪いよねということですよね。でも、名前空間の指定を省略できるようにすれば、冗長さがなくなって実装しやすいわけですから、グローバルな名前空間を汚さずにその恩恵を受けたいものです。たとえば、あるクラスがstd::vector
という話題を投げたら、typedefでできる?って言われまして。あ、できるねと。テンプレート書いてる時ぐらいにしかtypedef使ってなかったので盲点になってました。せっかくなので、usingとtypedefを使ってみて、どんな違いがあるのか確めてみようと思いました。これが今回の内容になります。
※「名前空間を汚す」以外の言い回しが思いつきませんでした。ここでいう「名前空間」は、C++の言語機能である名前空間(namespace)ではなくて、一般的な意味での名前空間です。混乱させてたらごめんなさい。