我有以下的C++ 11碼:檢查我們是否有一個const類型
#include <iostream>
#include <type_traits>
template<typename T> void overload(T&& t);
template<> void overload<char&>(char& t) { std::cout << "char& called" << std::endl; }
template<> void overload<const char&>(const char& t) { std::cout << "const char& called" << std::endl; }
int main() {
std::cout << "const char: " << ((std::is_const<const char>::value)?"const":"non-const") << std::endl;
std::cout << "const char&: " << ((std::is_const<const char&>::value)?"const":"non-const") << std::endl;
const char c = 'c';
overload(c);
return 0;
}
運行當我
const char: const
const char&: non-const
const char& called
我不知道爲什麼到std::is_const
第二個電話呢沒有看到const,而重載的調用確實看到它。
有什麼想法?
這個問題與這個問題高度相關: Type deduction in templated functions and const quailifier但還是有點不同。
謝謝!這是我需要的暗示。還要感謝其他評論。 – mg84