Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何避免;(作废)a“;有副作用吗?_C++_Gcc_Void_C++11 - Fatal编程技术网

C++ 如何避免;(作废)a“;有副作用吗?

C++ 如何避免;(作废)a“;有副作用吗?,c++,gcc,void,c++11,C++,Gcc,Void,C++11,我有这个代码,GCC打印“什么!?”。我怎样才能避免这种情况,使void cast的意思是“忽略孤独的‘a;’” #包括 结构A{ 模板 运算符T(){ std::cout添加一个 operator void() {} 注意。正如您所观察到的,这是一个标准。标准如下: 12.3.2转换函数[类别conv.fct] (1) A 转换函数从不用于将(可能是cv限定的)对象转换为[…](可能是cv限定的)void。 116)转换为void不会调用任何转换函数(5.2.9) 5.2.9静态浇铸[ex

我有这个代码,GCC打印“什么!?”。我怎样才能避免这种情况,使void cast的意思是“忽略孤独的‘a;’”

#包括
结构A{
模板
运算符T(){
std::cout添加一个

operator void() {}

注意。

正如您所观察到的,这是一个标准。标准如下:

12.3.2转换函数[类别conv.fct] (1) A 转换函数从不用于将(可能是cv限定的)对象转换为[…](可能是cv限定的)void。
116)转换为void不会调用任何转换函数(5.2.9)

5.2.9静态浇铸[expr.Static.cast] (6) 任何表达式都可以显式转换为cv void类型,在这种情况下,它将成为一个丢弃的值 表达方式(第5条)

作为解决方法,您可以编写:

a, void();

不可能重载
运算符(void)
,因此从一致性实现调用用户定义行为的可能性为零。

为什么需要它?不允许使用
void
专门化模板函数吗?(主体为空)注意,在C中,如果
a
对象是volatile限定的,那么语句
(void)a;
“不可能重载
操作符,(void)
[…]”也会产生副作用如果编译器有问题怎么办?:P…或者换一种说法,对于一致性实现来说,不可能需要解决方法。谢谢!我无法想象我以前没有遇到过这个问题。
a, void();