Извиняюсь, но я не понимаю, почему следующее не будет работать (gcc 4.8.1):
#include <string>
using namespace std;
template <typename T> struct A{
//A(): s("why") { } //fine
//string s{"what"}; //also fine
//A() = default; //(same error as below)
string s = "why?!"; //error: conversion from 'const char [6]' to non-scalar type 'std::string {aka std::basic_string<char>}' requested|
};
struct B{
string s = "why?!"; //all good
};
int main(){
A<int> a;
B b;
}
По какой-то причине, введя шаблон, я не могу использовать =
для инициализатора в классе строки s
. Встроенные типы работают, и я действительно могу обойти его, используя фигурные скобки или явно интуитивно понятный в конструкторе по умолчанию. Почему возникает проблема с использованием =
?