康桓瑋*_*康桓瑋 9 c++ conditional-operator language-lawyer
考虑以下无用的代码片段,它在不同的编译器中给出不一致的结果(演示)
\n#include <type_traits>\n\nchar* dummy;\nconst char* const& a = dummy;\n char* & b = dummy;\nusing T = decltype(true ? a : b);\nstatic_assert(std::is_same<const char* const&, T>::value); // pass in Clang and MSVC:c++20\nstatic_assert(std::is_same<const char* , T>::value); // pass in GCC and MSVC:c++17\nRun Code Online (Sandbox Code Playgroud)\nGCC认为T存在const char*于C++的所有版本中,而Clang认为存在const char* const&于所有版本中;MSVC 认为T在const char*C++17 和const char* const&C++20 下。
从语言律师\xe2\x80\x99s的角度来看,我应该相信哪个编译器?
\n