> If I'm reading the error messages correctly, then the little program
> below should fail to compile. Could you please give it a try?  If it
> does compile, when run it should produce the output "dispatch() array,
> N=1".
>
> If it fails to compile, with messages similar to the real failure,
> could you please ask one of your compiler engineers what the problem
> is? It is compiling fine on GCC, VC++, Intel, etc.
>

The messages from the small test-case are still the same:
"t.C", line 18.5: 1540-0219 (S) The call to "dispatch" has no best match.
"t.C", line 18.14: 1540-1228 (I) Argument number 1 is an lvalue of type "const char [1]".
"t.C", line 10.8: 1540-1202 (I) No candidate is better than "dispatch<const char,1>(const char (&)[1])".
"t.C", line 18.14: 1540-1231 (I) The conversion from argument number 1 to "const char (&)[1]" uses "the identity conversion".
"t.C", line 4.8: 1540-1202 (I) No candidate is better than "dispatch<const char [1]>(const char (&)[1])".
"t.C", line 18.14: 1540-1231 (I) The conversion from argument number 1 to "const char (&)[1]" uses "the identity conversion".
"t.C", line 16.8: 1540-0700 (I) The previous message was produced while processing "path<const char [1]>(const char (&)[1])".
"t.C", line 23.5: 1540-0700 (I) The previous message was produced while processing "main()"

The problem is the compiler has issues with partial ordering.  Boost.Accumulators, and Boost.Proto are other examples of Boost libraries that are affected as well. We hope to start work on Core Issue 214 and generally fix partial ordering in the process but it will take some time.  

Chris Cambly
XL C++ Compiler Development