假設(shè)我正在編寫一個函數(shù)來打印字符串的長度:template <size_t N>void foo(const char (&s)[N]) { std::cout << "array, size=" << N-1 << std::endl;}foo("hello") // prints array, size=5現(xiàn)在,我想擴(kuò)展foo以支持非數(shù)組:void foo(const char* s) { std::cout << "raw, size=" << strlen(s) << std::endl;}但是事實(shí)證明,這破壞了我最初的預(yù)期用法:foo("hello") // now prints raw, size=5為什么?不需要模板到指針的轉(zhuǎn)換,而模板是完全匹配的嗎?有沒有辦法確保我的數(shù)組函數(shù)被調(diào)用?
為什么指針?biāo)p優(yōu)先于推導(dǎo)的模板?
ABOUTYOU
2019-09-24 16:34:21