函数可以与用户定义的文字一起使用吗?
如果是这样,可以做些什么恶作剧?这是合法的吗?
void operator "" _bar(int (*func)(int)) {
func(1);
}
int foo(int x) {
std::cout << x << std::endl;
}
int main() {
foo(0); // print 0
foo_bar; // print 1
}
最佳答案
根据 C++11 Feb 2011 Draft § 2.14.8,用户字面量类型是整数字面量、浮点字面量、字符串字面量和字符字面量。没有办法做一个函数字面量类型。
整数:
operator "" X (n ULL)
operator "" X ("n")
operator "" X <’c1’, ’c2’, ... ’ck’>()
漂浮的:
operator "" X (f L)
operator "" X ("f")
operator "" X <’c1’, ’c2’, ... ’ck’>()
字符串:
operator "" X (str, len)
operator "" X <’c1’, ’c2’, ... ’ck’>() //unoffcial, a rumored GCC extension
特点:
operator "" X (ch)
关于c++ - 用户定义的文字可以将函数作为参数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8100519/