http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58977

            Bug ID: 58977
           Summary: C++11 uniform initialization syntax causes error
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: drtwox at gmail dot com

Code example and compiler output explains all:

#include <fstream>

struct foo
{
    foo( std::fstream& stream )
        : stream_{ stream } // <-- Here's the problem
    {}

    std::fstream& stream_;
};

int main()
{
    std::fstream stream;
    foo f{ stream };
}


$ g++ --version
g++ (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1

$ g++ brace.cpp -std=c++11 -Wall -Wextra
brace.cpp: In constructor ‘foo::foo(std::fstream&)’:                            
brace.cpp:6:21: error: invalid initialization of non-const reference of type
‘std::fstream& {aka std::basic_fstream<char>&}’ from an rvalue of type
‘<brace-enclosed initializer list>’                                             
   : stream_{ stream } // <-- Here's the problem

Reply via email to