How to query "multi-declarator auto" support?

Does __has_feature(cxx_auto_type) mean that multi-declarator auto
is supported? The following page says nothing about multi-declarator auto:
http://clang.llvm.org/docs/LanguageExtensions.html#cxx_auto_type

I'm asking this question to make a patch for Boost.Config
( http://thread.gmane.org/gmane.comp.lib.boost.devel/224876 ).

Unfortunately, some of the C++11 feature supports in clang 3.0
cannot be recognized by Boost.Config, since its clang support is
a bit too old. And the release of Boost 1.48 beta is very close.

Regards,
Michel

Does __has_feature(cxx_auto_type) mean that multi-declarator auto
is supported? The following page says nothing about multi-declarator auto:
http://clang.llvm.org/docs/LanguageExtensions.html#cxx_auto_type

cxx_auto_type indicates support for both auto and multi-declarator auto (they were implemented at the same time in Clang).

I'm asking this question to make a patch for Boost.Config
( http://thread.gmane.org/gmane.comp.lib.boost.devel/224876 ).

Unfortunately, some of the C++11 feature supports in clang 3.0
cannot be recognized by Boost.Config, since its clang support is
a bit too old. And the release of Boost 1.48 beta is very close.

Are you planning to update Boost's Clang configuration? That would be wonderful.

  - Doug

Douglas Gregor wrote:

cxx_auto_type indicates support for both auto and multi-declarator auto (they were implemented at the same time in Clang).

Thanks for answering!

Are you planning to update Boost's Clang configuration? That would be wonderful.

Yep :slight_smile:
But, before completing a patch, I'd like to make some questions

* Does __has_feature(cxx_deleted_functions) mean that *defaulted* function
  is supported?
* Does __has_feature(cxx_generalized_initializers) mean that we can safely
  write `#include <initializer_list>` even with a C++03 standard library?
* How to query the support of char16_t and char32_t?
* How to query the support of C++11 decltype (N3276)?

Regards,
Michel

Jared Grubb wrote:

* Does __has_feature(cxx_generalized_initializers) mean that we can safely
write `#include <initializer_list>` even with a C++03 standard library?

For this, you could probably use "__has_include(<initializer_list>)" to
really get what you're looking for, no?

Agreed. To check the existence of the header,
"__has_include(<initializer_list>)" should be used. Thanks!

Regards,
Michel

Michel Morin wrote:

* Does __has_feature(cxx_deleted_functions) mean that *defaulted* function
is supported?

I tested some codes and confirmed that __has_feature(cxx_deleted_functions)
does not mean defaulted function is also supported. And there is no querying
macro something like __has_feature(cxx_defaulted_functions).

* Does __has_feature(cxx_generalized_initializers) mean that we can safely
write `#include <initializer_list>` even with a C++03 standard library?

Definitely no, I think, since this querying macro reports
about the "language core" part of initializer_list.

* How to query the support of char16_t and char32_t?

It seems that both of these types are supported on any versions of clang
in a C++11 mode.
So, can we query the support by `#ifdef __GXX_EXPERIMENTAL_CXX0X__`?

Regards,
Michel

Submitted a patch for clang's config to Boost
http://thread.gmane.org/gmane.comp.lib.boost.devel/224876/focus=225175
though I think it's too late to be merged to the release branch (Boost 1.48).

Thanks for your help!

Regards,
Michel