タグ

2018年12月4日のブックマーク (1件)

  • C++ ADLとは|問題と危険性、回避方法(明示的回避と事前回避) | MaryCore

    記事ではADLの概要を説明します。またADLの利点や問題点、危険性、ADLの回避方法についても詳細に解説していきます。 目次 ADLとは ADLの利点と活用例 ADLの発動パターン ADLの問題と危険性 ADLの回避(明示的回避) ADLの回避(事前回避) ADLとは ADL(argument dependent lookup, 実引数依存の名前探索)は実引数の型を活用した名前解決の特別なルールです。ADLは関数呼び出し時の実引数の型を基準に関数名を探索します。そしてその探索の範囲は、その実引数が属する名前空間にまで及ぶ点が最大の特徴です。 namespace ns { class X {}; void f(X) {} } int main() { f(ns::X{}); // `ns::f(X)`関数が呼ばれる } 上記main関数内で呼び出しているf関数は、一見するとグローバル空間の