vs2015u3中包含struct的初始化列表

时间:2017-05-25 09:23:00

标签: c++11

这似乎微不足道,但不起作用

    namespace Timer {

        struct T
        {
            int milliseconds = 0;
            int cmd_id = 0;
        };

        T init(const HWND hwnd) {
            T t = { 0, 0 } ;
            return t;
        }
    }

呼叫者

auto timer = Timer::init();

带有

的VS2015u3中的错误
h:\lfwin32\lfwin32.h(21): error C2440: 'initializing': cannot convert from 'initializer list' to 'LFWin32::Timer::T'
  h:\lfwin32\lfwin32.h(21): note: No constructor could take the source type, or constructor overload resolution was ambiguous

我原以为这是C ++ 11以后的标准。我需要设置一个选项吗?

1 个答案:

答案 0 :(得分:1)

你是对的,你只是错过了VS2015 完全支持C ++标准的部分!

如果查看list功能,您会看到VS2015不支持“聚合的NSDMI”,这是您想要的功能。

Visual Studio 2017应该支持此功能,因为它们提高了C ++标准的一致性。