【发布时间】:2019-08-12 01:05:21
【问题描述】:
让我们考虑以下代码(使用 clang++ 7.0.0 编译成功,编译器参数为 -std=c++17 -Wall -Wextra -Werror -pedantic-errors):
#include <iostream>
struct Foo
{
template <typename Type = void>
operator int()
{
return 42;
}
};
int main()
{
const auto i = Foo{}.operator int();
std::cout << i << std::endl;
}
是否可以使用显式提供的模板参数调用此类模板化的用户定义转换运算符?天真的方法无法编译:
const auto i = Foo{}.operator int<bool>();
【问题讨论】:
标签: c++ templates type-conversion language-lawyer conversion-operator