我正在尝试推导出一个非类型模板参数。
#include <iostream>
template <unsigned int S>
void getsize(unsigned int s) { std::cout << s << std::endl; }
int main()
{
getsize(4U);
// Id like to do this without explicitly stating getsize<4U>(4);
// or even getsize<4U>();
// Is this possible?
}
但是我遇到了错误:
deduce_szie_t.cpp: In function 'int main()':
deduce_szie_t.cpp:9:15: error: no matching function for call to 'getsize(unsigned int)'
deduce_szie_t.cpp:9:15: note: candidate is:
deduce_szie_t.cpp:4:6: note: template<unsigned int <anonymous> > void getsize(unsigned int)
deduce_szie_t.cpp:4:6: note: template argument deduction/substitution failed:
deduce_szie_t.cpp:9:15: note: couldn't deduce template parameter '<anonymous>'
是否可以推断出无符号整数,而不必明确声明模板参数?
我希望它像这样简洁:getsize(4U) 我想避免编写:getsize<4U>()
非常感谢任何帮助
getsize(4)
而不是getsize<4>()
?C++不允许你这样做,但如果这对你很重要,你可以编写一个宏;-) - Steve JessopS
和s
有关联,因此没有理由推断任何事情。 - GManNickG