Why does this code give an error trying to convert from a string constructed from std::istreambuf_iterator<char>
's to a regular default constructed string?
#include <string>
#include <streambuf>
int main()
{
std::string filePath = "path";
std::string source(
std::istreambuf_iterator<char>(
std::ifstream( filePath ) ),
std::istreambuf_iterator<char>() );
std::string s2 = source;
}
Edit: Added error message.
11:26: error: conversion from 'std::string(std::istreambuf_iterator<char,
std::char_traits<char> > (*)(std::ifstream), std::istreambuf_iterator<char,
std::char_traits<char> > (*)()) {aka std::basic_string<char>
(std::istreambuf_iterator<char, std::char_traits<char> >
(*)(std::basic_ifstream<char>), std::istreambuf_iterator<char,
std::char_traits<char> > (*)())}' to non-scalar type 'std::string {aka
std::basic_string<char>}' requested