Greetings,
Env: Win 8.1 x64, MSVC 2013, ICC 14 (latest up-to-date), but the issue is manifesting on beta ICC 15 as well.
I get this error for this code:
namespace detail { template <class _Tp, class... _Args> struct __is_constructible { private: template <class _Up, class... _UpArgs> static typename remove_reference<decltype(_Up( declval<_UpArgs>()... ), declval<true_type>())>::type __test(int); template <class, class...> static false_type __test(...); public: #ifdef _STLP_STATIC_CONST_INIT_BUG static const bool __value; #else static const bool __value = is_same<decltype(__test<_Tp, _Args...>(0)),true_type>::value; #endif }; } // namespace detail --- snip--- 1>stlport\type_traits(908): error : expected an identifier 1> public integral_constant<bool, detail::__is_constructible<_Tp,_Args...>::__value> 1> ^
"__is_constructible" is indeed in its own namespace scope ("detail"). But when I change struct name to e.g. "__is_constructibleX" it compiles fine.
IMHO there is some problem with namespace resolution in ICC 14 & 15.
PS: did anyone reading this have successful build of STLport at MSVC 2013 && ICC 14/15 ? Any advice is very welcome!