【发布时间】:2018-06-27 05:43:30
【问题描述】:
我不明白为什么这个程序无法使用 -std=c++14 编译 g++ 7.3 或 clang++ 5.0。
A 可以从 const int 初始化,如图所示。也可以从const int 创建对A 的常量引用,但使用const int 调用f(const A &) 失败。为什么?
#include <iostream>
struct V {
int i;
template <class T>
V(const T &t) : i{t} {}
};
struct A {
int i;
A(V v) : i{v.i} {}
};
void f(const A &) {}
int main() {
const auto i = 42;
const A a1{i}; // OK
std::cout << a1.i << '\n'; // 42
const A &a2 = A{i}; // OK
std::cout << a2.i << '\n'; // 42
f(i); // no matching function for call to 'f'
return 0;
}
【问题讨论】:
标签: c++ templates initialization implicit-conversion