相关疑难解决方法(0)

Visual Studio 2013'显式'关键字错误?

考虑以下程序:

#include <iostream>

class A
{
public:
  A( ) { std::cout << "A()\n"; }

  A( A& ) = delete;

  A( int i ) { std::cout << "A( " << i << " )\n"; }

  explicit operator int( ) { std::cout << "operator int()\n"; return 42; }
};

template< typename T = A > void f( T a = A() ) {}

int main( void )
{
  f();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2013编译此代码并使用输出运行

A()
operator int()
A( 42 )
Run Code Online (Sandbox Code Playgroud)

这是编译器错误吗?看起来VS编译器在此上下文中没有注意到'explicit'关键字.根据我的理解,VS …

c++ explicit-conversion visual-studio-2013

22
推荐指数
1
解决办法
1435
查看次数