下面的程序是否符合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