Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++ 如果返回值未分配给变量,则未解析函数重载_C++_Templates - Fatal编程技术网

C++ 如果返回值未分配给变量,则未解析函数重载

C++ 如果返回值未分配给变量,则未解析函数重载,c++,templates,C++,Templates,我编写了一个模板函数foo,它返回一个std::string auto s = foo(...) << std::endl; std::cout << s << std::endl; auto s=foo(…)您有一个输入错误。换行- std::cout << (foo(v.begin())) << std::end; std::coutstd::cout #include <iostream> #include <

我编写了一个模板函数
foo
,它返回一个
std::string

auto s = foo(...) << std::endl;
std::cout << s << std::endl;

auto s=foo(…)您有一个输入错误。换行-

std::cout << (foo(v.begin())) << std::end;
std::cout
std::cout
#include <iostream>
#include <string>
#include <iterator>
#include <vector>
#include <type_traits>

// checks if It is an iterator type
template<typename It, typename Base = std::input_iterator_tag>
struct is_iterator : public std::is_base_of<Base, typename std::iterator_traits<It>::iterator_category> {};

// dummy function that takes in iterator
template<typename It, typename = typename std::enable_if_t<is_iterator<It>::value>>
std::string foo(It it) { return "foo it"; }

int main() {
    std::vector<int> v{1};

    // works
    auto s = foo(v.begin());
    std::cout << s << std::endl;

    // doesn't
    std::cout << (foo(v.begin())) << std::end;
}
std::cout << (foo(v.begin())) << std::end;
std::cout << (foo(v.begin())) << std::endl;