C++11:関数の別名を付けるには?[重複しています]。
2023-10-15 18:05:49
質問
名前空間barにFooクラスがあった場合。
namespace bar
{
class Foo { ... }
};
それならできる。
using Baz = bar::Foo;
というように、名前空間に Baz という名前でクラスを定義したのと同じようになります。
関数にも同じことができるのでしょうか?
namespace bar
{
void f();
}
そして
using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
最もクリーンな方法は何でしょうか?
この解決策は、テンプレート関数にも当てはまるはずです。
定義です。
もしあるエンティティBが
エイリアス
である場合、ソースコードの中で A の使用法(もちろん宣言や定義ではない)をすべて B に置き換えたとしても、(取り除いた)生成コードは同じままである。 例えば
typedef A B
はエイリアスです。
#define B A
は(少なくとも)エイリアスである。
T& B = A
はエイリアスではなく、B は間接ポインタとして効果的に実装でき、A は "unaliased" が "immediate semantics" を使用することができます。
どのように解決するのですか?
完全転送を利用して、(多少の手間はかかりますが)関数の別名を定義することができます。
template <typename... Args>
auto g(Args&&... args) -> decltype(f(std::forward<Args>(args)...)) {
return f(std::forward<Args>(args)...);
}
この解決策は
f
がオーバーロードされていたり、関数テンプレートであっても適用されます。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】'cout'は型名ではない
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み] C++で関数名にエイリアスを割り当てるにはどうすればよいですか?
-
[解決済み] プリプロセッサー・マクロはなぜ悪なのか、そしてその代替手段は?