다음 프로그램 호환 C++ 11입니까? 그렇다면 트리거하는 특정 MSVC 버그를 알고 계십니까? 및/또는 가능한 해결 방법? 실제 유형 decltype
대체하는 경우오버로드 된 템플릿 함수의 MSVC2015 decltype 매개 변수 유형
#include <iostream>
struct A {};
struct B {};
constexpr A aaa = {};
constexpr B bbb = {};
template <typename T>
void foo(T, decltype(aaa)) { std::cout << "a"; }
template <typename T>
void foo(T, decltype(bbb)) { std::cout << "b"; }
//^C2995 'void foo(T,unknown-type)': function template has already been defined
int main()
{
foo(0, aaa);
foo(0, bbb);
}
는 다음 작동하지만, 실제로 이러한 유형의도 재현 복잡하고 나는 그들을 위해 별칭을하지 않으려는 것입니다.
컴파일 gcc/clang을 사용하면 문제가 없으며 C++ 11을 준수하지 않는 것도 볼 수 없습니다. – Jarod42