Argument-Dependent Lookup Barrier

  • boost::const_beginがbeginを限定せずに(boost::なしに)呼び出している
    • これがADLを引き起こし、一つのRangeがあるというだけでその名前空間でbeginという名前が使えなくなってしまう
    • boost::beginを呼び出すべきだと思う
    • クラス名までADLに取り込んでしまうのはGCCのバグでした・・・参考
  • ちょうどそれに関する記事・・・http://d.hatena.ne.jp/Cryolite/20051002
  • 以下、ADLはusing-directiveを考慮しないことを使った回避策


[]// See: boost/mpl/aux_/adl_barrier.hpp[]

[]namespace[] []biscuit_adl_barrier[][] { }[]

[]namespace[] []biscuit[][] {[]
[]using[] []namespace[] []biscuit_adl_barrier[][];[]
[]} [][]// namespace biscuit[]

[]namespace[] []biscuit_adl_barrier[][] {[]

[]// put begin and end here[]

[]} [][]// namespace biscuit_adl_barrier[]