下面的程序是否符合C++ 11?如果是这样,你知道触发它的特定MSVC错误吗?和/或可能的解决方法?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);
}
如果实际类型取代decltype
然后它工作,但在实践中,这些类型都太复杂重现,我不希望有他们的别名。
编译很好用gcc/clang,而且我也没有看到不兼容C++ 11的东西。 – Jarod42